High-performance, low-cost microservice governance platform. Service Discovery and Configuration Service | 高性能、低成本微服务治理平台
APACHE-2.0 License
CoSky is a lightweight, low-cost service registration, service discovery, and configuration service SDK. By using Redis in the existing infrastructure (I believe you have already deployed Redis), it doesn’t need to bring extra to the operation and maintenance deployment. Cost and burden. With the high performance of Redis, CoSky provides ultra-high TPS&QPS (100,000+/s JMH Benchmark). CoSky combines the process cache strategy + Redis PubSub to achieve real-time process cache refresh, with unparalleled QPS performance (70,000,000+/s JMH Benchmark) and real-time consistency between process cache and Redis.
Service Consumer --RPC--> Service Provider Examples
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
Optional
)Download cosky-server
tar cosky-lastVersion.tar
cd cosky-lastVersion
# Working directory: 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 will help you reinitialize the password and print it on the console.---------------- ****** CoSky - init super user:[cosky] password:[6TrmOux4Oj] ****** ----------------
gradle cosky-config:jmh
# or
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
# or
java -jar cosky-discovery/build/libs/cosky-discovery-lastVersion-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
Benchmark Mode Cnt Score Error Units
ConsistencyRedisServiceDiscoveryBenchmark.getInstances thrpt 76621729.048 ops/s
ConsistencyRedisServiceDiscoveryBenchmark.getServices thrpt 455760632.346 ops/s
RedisServiceDiscoveryBenchmark.getInstances thrpt 226909.985 ops/s
RedisServiceDiscoveryBenchmark.getServices thrpt 304979.150 ops/s
RedisServiceRegistryBenchmark.deregister thrpt 255305.648 ops/s
RedisServiceRegistryBenchmark.register thrpt 110664.160 ops/s
RedisServiceRegistryBenchmark.renew thrpt 210960.325 ops/s
CoSky-Mirror is like a mirror placed between Nacos and CoSky to build a unified service discovery platform.
CoSky | Eureka | Consul | CoreDNS | Zookeeper | Nacos | Apollo | |
---|---|---|---|---|---|---|---|
CAP | CP+AP | AP | CP | CP | CP | CP+AP | CP+AP |
Health Check | Client Beat | Client Beat | TCP/HTTP/gRPC/Cmd | Keep Alive | Keep Alive | TCP/HTTP/Client Beat | Client Beat |
Load Balancing Strategy | Weight/Selector | Ribbon | Fabio | RoundRobin | RoundRobin | Weight/metadata/RoundRobin | RoundRobin |
Avalanche Protection | N | Y | N | N | N | Y | N |
Auto Logoff Instance | Support | Support | Not Support | Not Support | Support | Support | Support |
Access Protocol | HTTP/Redis | HTTP | HTTP/DNS | DNS | TCP | HTTP/DNS | HTTP |
Listening Support | Support | Support | Support | Not Support | Support | Support | Support |
Multi-data Center | Support | Support | Support | Not Support | Not Support | Support | Support |
Cross Registry Synchronization | Support | Not Support | Support | Not Support | Not Support | Support | Not Support |
SpringCloud Integration | Support | Support | Support | Not Support | Not Support | Support | Support |
Dubbo Integration | Support | Not Support | Not Support | Not Support | Support | Support | Support |
K8S Integration | Support | Not Support | Support | Support | Not Support | Support | Not Support |
Persistence | Redis | MySql | MySql |