Документация на китайскомCoSky — это легковесный, низкозатратный SDK для регистрации сервисов, обнаружения сервисов и сервисного конфигурирования. Используя Redis в существующей инфраструктуре (я уверен, что вы уже развернули Redis), он не требует дополнительных затрат и нагрузок на операцию и обслуживание. С высокой производительностью Redis, CoSky обеспечивает сверхвысокую TPS&QPS (100 000+/с JMH Benchmark). CoSky сочетает стратегию кэширования процессов + Redis PubSub для достижения реального времени обновления кэша процессов, с непревзойденной производительностью QPS (70 000 000+/с JMH Benchmark) и реального времени согласованности между кэшем процессов и Redis.## Обнаружение сервисов
Примеры Service Consumer --RPC--> Service Provider
Kotlin DSL
val coskyVersion = "lastVersion";
implementation("me.ahoo.cosky:spring-cloud-starter-cosky-config:${coskyVersion}")
implementation("me.ahoo.cosky:spring-cloud-starter-cosky-discovery:${coskyVersion}")
implementation("org.springframework.cloud:spring-cloud-starter-loadbalancer:3.0.3")
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>demo</artifactId>
<properties>
<cosky.version>lastVersion</cosky.version>
</properties>
<dependencies>
<dependency>
<groupId>me.ahoo.cosky</groupId>
<artifactId>spring-cloud-starter-cosky-config</artifactId>
<version>${cosky.version}</version>
</dependency>
<dependency>
<groupId>me.ahoo.cosky</groupId>
<artifactId>spring-cloud-starter-cosky-discovery</artifactId>
<version>${cosky.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
<version>3.0.3</version>
</dependency>
</dependencies>
</project>
spring:
application:
name: ${service.name:cosky}
data:
redis:
url: redis://localhost:6379
cloud:
cosky:
namespace: ${cosky.namespace:cosky-{system}}
config:
config-id: ${spring.application.name}.yaml
service-registry:
auto-registration:
enabled: ${cosky.auto-registry:true}
logging:
file:
name: logs/${spring.application.name}.log
```## Сервер REST-API (``Необязательно``)
### Установка сервера REST-API
#### Вариант 1: Скачивание исполняемого файла
> Скачать [cosky-server](https://github.com/Ahoo-Wang/cosky/releases/download/v2.0.0/cosky-2.0.0.tar)
> tar *cosky-lastVersion.tar*
```shell
cd cosky-lastVersion
# Рабочая директория: cosky-lastVersion
bin/cosky --server.port=8080 --spring.data.redis.uri=redis://localhost:6379
docker pull ahoowang/cosky:lastVersion
docker run --name cosky -d -p 8080:8080 --link redis -e SPRING_DATA_REDIS_URL=redis://redis:6379 ahoowang/cosky:lastVersion
apiVersion: apps/v1
kind: Deployment
metadata:
name: cosky
labels:
app: cosky
spec:
replicas: 1
selector:
matchLabels:
app: cosky
template:
metadata:
labels:
app: cosky
spec:
containers:
- env:
- name: SPRING_DATA_REDIS_URL
value: redis://redis-uri:6379
image: ahoowang/cosky:lastVersion
name: cosky
ports:
- containerPort: 8080
protocol: TCP
resources:
limits:
cpu: "1"
memory: 1280Mi
requests:
cpu: 250m
memory: 1024Mi
volumeMounts:
- mountPath: /etc/localtime
name: volume-localtime
volumes:
- hostPath:
path: /etc/localtime
type: ""
name: volume-localtime
---
apiVersion: v1
kind: Service
metadata:
name: cosky
labels:
app: cosky
spec:
selector:
app: cosky
ports:
- name: rest
port: 80
protocol: TCP
targetPort: 8080
enforce-init-super-user: true
, и CoSky поможет вам инициализировать пароль заново и вывести его в консоль.---------------- ****** CoSky - init super user:[cosky] password:[6TrmOux4Oj] ****** ----------------
gradle cosky-config:jmh
# или
java -jar cosky-config/build/libs/cosky-config-lastVersion-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
Benchmark Mode Cnt Score Error Units
ConsistencyRedisConfigServiceBenchmark.getConfig thrpt 256733987.827 ops/s
RedisConfigServiceBenchmark.getConfig thrpt 241787.679 ops/s
RedisConfigServiceBenchmark.setConfig thrpt 140461.112 ops/s
gradle cosky-discovery:jmh
# или
java -jar cosky-discovery/build/libs/cosky-discovery-lastVersion-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
Benchmark Mode Cnt Сcore Error Units ConsistencyRedisServiceDiscoveryBenchmark.getInstances thrpt 76621729.048 оп/s ConsistencyRedisServiceDiscoveryBenchmark.getServices thrpt 455760632.346 оп/s RedisServiceDiscoveryBenchmark.getInstances thrpt 226909.985 оп/s RedisServiceDiscoveryBenchmark.getServices thrpt 304979.150 оп/s RedisServiceRegistryBenchmark.deregister thrpt 255305.648 оп/s RedisServiceRegistryBenchmark.register thrpt 110664.160 оп/s RedisServiceRegistryBenchmark.renew thrpt 210960.325 оп/s
> CoSky-Mirror — это как зеркало, расположенное между Nacos и CoSky для построения единой платформы открытия сервисов.
<p align="center">
<img src="./docs/CoSky-Mirror.png" alt="CoSky-Mirror"/>
</p><p align="center">
<img src=". /docs/CoSky-Mirror-Unified.png" alt="CoSky-Mirror-Unified"/>
</p>
## Сравнение с другими системами
| | CoSky | Eureka | Consul | CoreDNS | Zookeeper | Nacos | Apollo |
|--------------------------------|------------------|--------------|-------------------|--------------|--------------|------------------------------|--------------|
| CAP | CP+AP | AP | CP | CP | CP | CP+AP | CP+AP |
| Проверка работоспособности | Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | Keep Alive | Keep Alive | TCP/HTTP/Client Beat | Client Beat |
| Стратегия балансировки нагрузки | Weight/Selector | Ribbon | Fabio | RoundRobin | RoundRobin | Weight/metadata/RoundRobin | RoundRobin |
| Защита от аваланча | Нет | Да | Нет | Нет | Нет | Да | Нет |
| Автоматическое отключение | Поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается | Поддерживается |
| Протокол доступа | HTTP/Redis | HTTP | HTTP/DNS | DNS | TCP | HTTP/DNS | HTTP |
| Поддержка прослушивания | Поддерживается | Поддерживается | Поддерживается | Не поддерживается | Поддерживается | Поддерживается | Поддерживается |
| Поддержка многочисленных центров данных | Поддерживается | Поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается | | Синхронизация кросс-регистрации | Поддерживается | Не поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Не поддерживается |
| Интеграция с SpringCloud | Поддерживается | Поддерживается | Поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается |
| Интеграция с Dubbo | Поддерживается | Не поддерживается | Не поддерживается | Не поддерживается | Поддерживается | Поддерживается | Поддерживается |
| Интеграция с K8S | Поддерживается | Не поддерживается | Поддерживается | Поддерживается | Не поддерживается | Поддерживается | Не поддерживается |
|| Устойчивость | Redis | | | | | MySql | MySql |
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )