CoSky 4.2.0 发布 - 高性能、低成本微服务治理平台

CoSky 高性能、低成本微服务治理平台(服务注册/发现 & 配置中心)

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

更新内容 🎉 🎉 🎉

全面兼容 Spring Boot 3

  • 依赖:更新 org.springframework.boot:spring-boot-dependencies 版本 v3.1.5
  • 依赖:更新 Angular 版本到 v17
  • 重构:优化管理控制台(UI)样式
  • 特新:新增登陆用户水印
  • 依赖:更新 io.mockk:mockk 版本 v1.13.8
  • 依赖:更新 CosId 版本 v2.5.6
  • 依赖:使用 CoSec 版本 v2.4.3
  • 依赖:更新 Kotlin 版本 v1.9.20

服务注册与发现

CoSky-Discovery

配置中心

CoSky-Configuration

Examples

Service Consumer --RPC--> Service Provider Examples

安装

Gradle

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")

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>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>

bootstrap.yaml (Spring-Cloud-Config)

spring:
  application:
    name: ${service.name:cosky}
  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)

安装 REST-API Server

方式一:下载可执行文件

下载 cosky-server

解压 cosky-lastVersion.tar

cd cosky-lastVersion
# 工作目录: cosky
bin/cosky --server.port=8080 --spring.redis.uri=redis://localhost:6379

方式二:在 Docker 中运行

docker pull ahoowang/cosky:lastVersion
docker run --name cosky -d -p 8080:8080 --link redis -e SPRING_REDIS_URL=redis://redis:6379  ahoowang/cosky:lastVersion

方式三:在 Kubernetes 中运行

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_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

CoSky-Dashboard

服务依赖拓扑

CoSky-Dashboard-topology

基于角色的访问控制(RBAC)

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

角色权限

CoSky-Dashboard-role

添加角色

CoSky-Dashboard-role-add

用户管理

CoSky-Dashboard-user

添加用户

CoSky-Dashboard-user-add

审计日志

CoSky-Dashboard-audit-log

命名空间管理

CoSky-Dashboard-namespace

配置管理

CoSky-Dashboard-config

编辑配置

CoSky-Dashboard-config-edit

回滚配置

CoSky-Dashboard-config-rollback

从 Nacos 导入配置

CoSky-Dashboard-config-import

服务管理

CoSky-Dashboard-service

编辑服务实例信息

CoSky-Dashboard-service-edit

REST-API

https://ahoo-cosky.apifox.cn/

JMH-Benchmark

  • 基准测试运行环境:笔记本开发机 ( MacBook Pro (M1) )
  • 所有基准测试都在开发笔记本上执行。
  • Redis 部署环境也在该笔记本开发机上。

ConfigService

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

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 (实时同步服务实例变更状态)

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

CoSky-Mirror

CoSky-Mirror-Unified

其他同类产品对比

  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
优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/267258/cosky-4-2-0-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。