开源软件名称:CoSky
开源软件地址:https://gitee.com/AhooWang/CoSky
开源软件介绍:
CoSky 高性能、低成本微服务治理平台(服务注册/发现 & 配置中心)English Document
CoSky 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了Redis),不用给运维部署带来额外的成本与负担。 借助于 Redis 的高性能, CoSky 提供了超高TPS&QPS (10W+/s JMH 基准测试)。CoSky 结合本地进程缓存策略 + Redis PubSub,实现实时进程缓存刷新,兼具无与伦比的QPS性能 (7000W+/s JMH 基准测试)、进程缓存与 Redis 的实时一致性。 服务注册与发现 配置中心 ExamplesService Consumer --RPC--> Service Provider Examples 安装GradleKotlin DSL
val coskyVersion = "1.3.20"; 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 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>1.3.20</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> bootstrap.yaml (Spring-Cloud-Config)spring: application: name: ${service.name:cosky-rest-api} cloud: cosky: namespace: ${cosky.namespace:cosky-{system}} config: config-id: ${spring.application.name}.yaml redis: mode: ${cosky.redis.mode:standalone} url: ${cosky.redis.uri:redis://localhost:6379}logging: file: name: logs/${spring.application.name}.log REST-API Server (Optional )安装 REST-API Server方式一:下载可执行文件下载 rest-api-server
解压 cosky-rest-api-1.3.20.tar
cd cosky-rest-api-1.3.20# 工作目录: cosky-rest-api-1.3.20bin/cosky-rest-api --server.port=8080 --cosky.redis.uri=redis://localhost:6379 方式二:在 Docker 中运行docker pull ahoowang/cosky-rest-api:1.3.20docker run --name cosky-rest-api -d -p 8080:8080 --link redis -e COSKY_REDIS_URI=redis://redis:6379 ahoowang/cosky-rest-api:1.3.20 方式三:在 Kubernetes 中运行apiVersion: apps/v1kind: Deploymentmetadata: name: cosky-rest-api labels: app: cosky-rest-apispec: replicas: 1 selector: matchLabels: app: cosky-rest-api template: metadata: labels: app: cosky-rest-api spec: containers: - env: - name: COSKY_REDIS_MODE value: standalone - name: COSKY_REDIS_URI value: redis://redis-uri:6379 image: ahoowang/cosky-rest-api:1.3.20 name: cosky-rest-api 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: v1kind: Servicemetadata: name: cosky-rest-api labels: app: cosky-rest-apispec: selector: app: cosky-rest-api ports: - name: rest port: 80 protocol: TCP targetPort: 8080 Dashboardhttp://localhost:8080/dashboard
服务依赖拓扑 基于角色的访问控制(RBAC)- cosky: 保留用户名,超级用户,拥有最高权限。应用首次启动时会初始化超级用户(cosky)的密码,并打印在控制台。忘记密码也不用担心,可以通过配置
enforce-init-super-user: true ,CoSky 会帮助你重新初始化密码并打印在控制台。
---------------- ****** CoSky - init super user:[cosky] password:[6TrmOux4Oj] ****** ---------------- - admin: 保留角色,超级管理员角色,拥有所有权限,一个用户可以绑定多个角色,一个角色可以绑定多个资源操作权限。
- 权限控制粒度为命名空间,读写操作
角色权限 添加角色 用户管理 添加用户 审计日志 命名空间管理 配置管理 编辑配置 回滚配置 从 Nacos 导入配置 服务管理 编辑服务实例信息 REST-APIhttp://localhost:8080/swagger-ui/index.html#/
Namespace - /v1/namespaces
- /v1/namespaces/{namespace}
- /v1/namespaces/current
- /v1/namespaces/current/{namespace}
Config - /v1/namespaces/{namespace}/configs
- /v1/namespaces/{namespace}/configs/{configId}
- /v1/namespaces/{namespace}/configs/{configId}/versions
- /v1/namespaces/{namespace}/configs/{configId}/versions/{version}
- /v1/namespaces/{namespace}/configs/{configId}/to/{targetVersion}
Service - /v1/namespaces/{namespace}/services/
- /v1/namespaces/{namespace}/services/{serviceId}/instances
- /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}
- /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}/metadata
- /v1/namespaces/{namespace}/services/{serviceId}/lb
JMH-Benchmark- 基准测试运行环境:笔记本开发机 ( MacBook Pro (M1) )
- 所有基准测试都在开发笔记本上执行。
- Redis 部署环境也在该笔记本开发机上。
ConfigServicegradle cosky-config:jmh# orjava -jar cosky-config/build/libs/cosky-config-1.3.20-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1 Benchmark Mode Cnt Score Error UnitsConsistencyRedisConfigServiceBenchmark.getConfig thrpt 256733987.827 ops/sRedisConfigServiceBenchmark.getConfig thrpt 241787.679 ops/sRedisConfigServiceBenchmark.setConfig thrpt 140461.112 ops/s ServiceDiscoverygradle cosky-discovery:jmh# orjava -jar cosky-discovery/build/libs/cosky-discovery-1.3.20-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1 Benchmark Mode Cnt Score Error UnitsConsistencyRedisServiceDiscoveryBenchmark.getInstances thrpt 76621729.048 ops/sConsistencyRedisServiceDiscoveryBenchmark.getServices thrpt 455760632.346 ops/sRedisServiceDiscoveryBenchmark.getInstances thrpt 226909.985 ops/sRedisServiceDiscoveryBenchmark.getServices thrpt 304979.150 ops/sRedisServiceRegistryBenchmark.deregister thrpt 255305.648 ops/sRedisServiceRegistryBenchmark.register thrpt 110664.160 ops/sRedisServiceRegistryBenchmark.renew thrpt 210960.325 ops/s CoSky-Mirror (实时同步服务实例变更状态)CoSky-Mirror 就像一个镜子放在 Nacos、CoSky 中间,构建一个统一的服务发现平台。
其他同类产品对比 | 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 | 负载均衡策略 | 权重/RoundRobin | Ribbon | Fabio | RoundRobin | RoundRobin | 权重/metadata/Selector | RoundRobin | 雪崩保护 | 无 | 有 | 无 | 无 | 无 | 有 | 无 | 自动注销实例 | 支持 | 支持 | 不支持 | 不支持 | 支持 | 支持 | 支持 | 访问协议 | HTTP/Redis | HTTP | HTTP/DNS | DNS | TCP | HTTP/DNS | HTTP | 监听支持 | 支持 | 支持 | 支持 | 不支持 | 支持 | 支持 | 支持 | 多数据中心 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 支持 | 支持 | 跨注册中心同步 | 支持 | 不支持 | 支持 | 不支持 | 不支持 | 支持 | 不支持 | SpringCloud集成 | 支持 | 支持 | 支持 | 不支持 | 不支持 | 支持 | 支持 | Dubbo集成 | 支持 | 不支持 | 不支持 | 不支持 | 支持 | 支持 | 支持 | K8S集成 | 支持 | 不支持 | 支持 | 支持 | 不支持 | 支持 | 不支持 | 持久化 | Redis | | | | | MySql | MySql | |
请发表评论