CoSky 基于 Redis 的服务治理平台开源项目

我要开发同款
匿名用户2021年05月07日
58阅读
开发技术Kotlin
所属分类数据库管理工具、数据库相关
授权协议Apache-2.0

作品详情

CoSky 高性能、低成本微服务治理平台(服务注册/发现&配置中心)CoSky 是一个轻量级、低成本的服务注册、服务发现、配置服务SDK,通过使用现有基础设施中的Redis(相信你已经部署了Redis),不用给运维部署带来额外的成本与负担。借助于Redis的高性能, CoSky 提供了超高TPS&QPS(10W+/s JMH基准测试)。CoSky 结合本地进程缓存策略+ RedisPubSub,实现实时进程缓存刷新,兼具无与伦比的QPS性能(7000W+/s JMH基准测试)、进程缓存与Redis的实时一致性。

服务注册与发现

配置中心

CoSky-Mirror(实时同步服务实例变更状态)

CoSky-Mirror就像一个镜子放在Nacos、CoSky中间,构建一个统一的服务发现平台。

ExamplesServiceConsumer--RPC-->ServiceProviderExamples

安装Gradle

KotlinDSL

valcoskyVersion="1.2.10";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<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="https://maven.apache.org/POM/4.0.0"xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="https://maven.apache.org/POM/4.0.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><artifactId>demo</artifactId><properties><cosky.version>1.2.10</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}.yamlredis:mode:${cosky.redis.mode:standalone}url:${cosky.redis.uri:redis://localhost:6379}logging:file:name:logs/${spring.application.name}.logREST-APIServer(Optional)安装REST-APIServer方式一:下载可执行文件

下载 rest-api-server

解压 cosky-rest-api-1.2.10.tar

cdcosky-rest-api-1.2.10#工作目录:cosky-rest-api-1.2.10bin/cosky-rest-api--server.port=8080--cosky.redis.uri=redis://localhost:6379方式二:在Docker中运行dockerpullahoowang/cosky-rest-api:1.2.10dockerrun--namecosky-rest-api-d-p8080:8080--linkredis-eCOSKY_REDIS_URI=redis://redis:6379ahoowang/cosky-rest-api:1.2.10方式三:在Kubernetes中运行apiVersion:apps/v1kind:Deploymentmetadata:name:cosky-rest-apilabels:app:cosky-rest-apispec:replicas:1selector:matchLabels:app:cosky-rest-apitemplate:metadata:labels:app:cosky-rest-apispec:containers:-env:-name:COSKY_REDIS_MODEvalue:standalone-name:COSKY_REDIS_URIvalue:redis://redis-uri:6379image:ahoowang/cosky-rest-api:1.2.10name:cosky-rest-apiports:-containerPort:8080protocol:TCPresources:limits:cpu:"1"memory:1280Mirequests:cpu:250mmemory:1024MivolumeMounts:-mountPath:/etc/localtimename:volume-localtimevolumes:-hostPath:path:/etc/localtimetype:""name:volume-localtime---apiVersion:v1kind:Servicemetadata:name:cosky-rest-apilabels:app:cosky-rest-apispec:selector:app:cosky-rest-apiports:-name:restport:80protocol:TCPtargetPort:8080Dashboard

https://localhost:8080/dashboard

服务依赖拓扑

基于角色的访问控制(RBAC)cosky:保留用户名,超级用户,拥有最高权限。应用首次启动时会初始化超级用户(cosky)的密码,并打印在控制台。忘记密码也不用担心,可以通过配置 enforce-init-super-user:true,CoSky 会帮助你重新初始化密码并打印在控制台。----------------******CoSky-initsuperuser:[cosky]password:[6TrmOux4Oj]******----------------admin:保留角色,超级管理员角色,拥有所有权限,一个用户可以绑定多个角色,一个角色可以绑定多个资源操作权限。权限控制粒度为命名空间,读写操作角色权限

添加角色

用户管理

添加用户

审计日志

命名空间管理

配置管理

编辑配置

回滚配置

从Nacos导入配置

服务管理

编辑服务实例信息

REST-API

https://localhost:8080/swagger-ui/index.html#/

Namespace

/v1/namespacesGET/v1/namespaces/{namespace}PUTGET/v1/namespaces/currentGET/v1/namespaces/current/{namespace}PUT

Config

/v1/namespaces/{namespace}/configsGET/v1/namespaces/{namespace}/configs/{configId}GETPUTDELETE/v1/namespaces/{namespace}/configs/{configId}/versionsGET/v1/namespaces/{namespace}/configs/{configId}/versions/{version}GET/v1/namespaces/{namespace}/configs/{configId}/to/{targetVersion}PUTService

/v1/namespaces/{namespace}/services/GET/v1/namespaces/{namespace}/services/{serviceId}/instancesGETPUT/v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}DELETE/v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}/metadataPUT/v1/namespaces/{namespace}/services/{serviceId}/lbGETJMH-Benchmark基准测试运行环境:笔记本开发机(MacBookPro(M1))所有基准测试都在开发笔记本上执行。Redis部署环境也在该笔记本开发机上。ConfigServicegradlecosky-config:jmh#orjava-jarcosky-config/build/libs/cosky-config-1.2.10-jmh.jar-bmthrpt-t25-wi1-rfjson-f1BenchmarkModeCntScoreErrorUnitsConsistencyRedisConfigServiceBenchmark.getConfigthrpt256733987.827ops/sRedisConfigServiceBenchmark.getConfigthrpt241787.679ops/sRedisConfigServiceBenchmark.setConfigthrpt140461.112ops/sServiceDiscoverygradlecosky-discovery:jmh#orjava-jarcosky-discovery/build/libs/cosky-discovery-1.2.10-jmh.jar-bmthrpt-t25-wi1-rfjson-f1BenchmarkModeCntScoreErrorUnitsConsistencyRedisServiceDiscoveryBenchmark.getInstancesthrpt76621729.048ops/sConsistencyRedisServiceDiscoveryBenchmark.getServicesthrpt455760632.346ops/sRedisServiceDiscoveryBenchmark.getInstancesthrpt226909.985ops/sRedisServiceDiscoveryBenchmark.getServicesthrpt304979.150ops/sRedisServiceRegistryBenchmark.deregisterthrpt255305.648ops/sRedisServiceRegistryBenchmark.registerthrpt110664.160ops/sRedisServiceRegistryBenchmark.renewthrpt210960.325ops/s
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论