# CoSky **Repository Path**: go_ahead_with_your_heart/CoSky ## Basic Information - **Project Name**: CoSky - **Description**: 高性能、低成本微服务治理平台(服务注册/发现 & 配置中心) - **Primary Language**: Kotlin - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: https://github.com/Ahoo-Wang/CoSky - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 33 - **Created**: 2025-11-27 - **Last Updated**: 2025-11-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # [CoSky](https://github.com/Ahoo-Wang/CoSky) High-performance, low-cost microservice governance platform (Service Discovery and Configuration Service) [![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html) [![GitHub release](https://img.shields.io/github/release/Ahoo-Wang/CoSky.svg)](https://github.com/Ahoo-Wang/CoSky/releases) [![Maven Central Version](https://img.shields.io/maven-central/v/me.ahoo.cosky/cosky-core)](https://central.sonatype.com/artifact/me.ahoo.cosky/cosky-core) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/9e31358946b645abb283e83b10e85e2d)](https://www.codacy.com/gh/Ahoo-Wang/CoSky/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Ahoo-Wang/CoSky&utm_campaign=Badge_Grade) [![codecov](https://codecov.io/gh/Ahoo-Wang/CoSky/branch/main/graph/badge.svg?token=N114DHHBUI)](https://codecov.io/gh/Ahoo-Wang/CoSky) [![Integration Test Status](https://github.com/Ahoo-Wang/CoSky/actions/workflows/integration-test.yml/badge.svg)](https://deepwiki.com/Ahoo-Wang/CoSky) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Ahoo-Wang/CoSky) > [中文文档](https://github.com/Ahoo-Wang/CoSky/blob/main/README.zh-CN.md) *[CoSky](https://github.com/Ahoo-Wang/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](#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](#jmh-benchmark)) and real-time consistency between process cache and Redis. ## Service Discovery

CoSky-Discovery

## Configuration

CoSky-Configuration

## Examples [Service Consumer --RPC--> Service Provider Examples](https://github.com/Ahoo-Wang/CoSky/tree/main/examples) ## Installation ### Gradle > Kotlin DSL ``` kotlin 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") ``` ### Maven ```xml 4.0.0 demo lastVersion me.ahoo.cosky spring-cloud-starter-cosky-config ${cosky.version} me.ahoo.cosky spring-cloud-starter-cosky-discovery ${cosky.version} org.springframework.cloud spring-cloud-starter-loadbalancer 3.0.3 ``` ### bootstrap.yaml (Spring-Cloud-Config) ```yaml 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 Server (``Optional``) ### Installation REST-API Server #### Option 1:Download the executable file > Download [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 # Working directory: cosky-lastVersion bin/cosky --server.port=8080 --spring.data.redis.uri=redis://localhost:6379 ``` #### Option 2:Run On Docker ```shell 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 ``` #### Option 3:Run On Kubernetes ```yaml 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 ``` ### Dashboard > [http://localhost:8080/dashboard](http://localhost:8080/dashboard)

CoSky-Dashboard

### Service dependent topology

CoSky-Dashboard-topology

### Role-based access control(RBAC) - cosky: Reserved username, super user, with the highest authority. When the application is launched for the first time, the super user (cosky) password will be initialized and printed on the console. Don't worry if you forget your password, you can configure `enforce-init-super-user: true`, *CoSky* will help you reinitialize the password and print it on the console. ```log ---------------- ****** CoSky - init super user:[cosky] password:[6TrmOux4Oj] ****** ---------------- ``` - admin: Reserved roles, super administrator roles, have all permissions, a user can be bound to multiple roles, and a role can be bound to multiple resource operation permissions. - Permission control granularity is namespace, read and write operations #### Role Permissions

CoSky-Dashboard-role

##### Add Role

CoSky-Dashboard-role-add

#### User Management

CoSky-Dashboard-user

##### Add User

CoSky-Dashboard-user-add

#### Audit Log

CoSky-Dashboard-audit-log

#### Namespace

CoSky-Dashboard-namespace

#### Config

CoSky-Dashboard-config

##### Edit configuration

CoSky-Dashboard-config-edit

##### Rollback configuration

CoSky-Dashboard-config-rollback

##### Import configuration from Nacos

CoSky-Dashboard-config-import

#### Service

CoSky-Dashboard-service

##### Edit Service Instance

CoSky-Dashboard-service-edit

### REST-API > https://ahoo-cosky.apifox.cn/ ## JMH-Benchmark - The development notebook : MacBook Pro (M1) - All benchmark tests are carried out on the development notebook. - Deploying Redis on the development notebook. ### ConfigService ``` shell 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 ``` ### ServiceDiscovery ``` shell 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 (Real-time synchronization of service instance change status) > CoSky-Mirror is like a mirror placed between Nacos and CoSky to build a unified service discovery platform.

CoSky-Mirror

CoSky-Mirror-Unified

## Comparison with others | | 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 |