CoSky 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
CoSky 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
CoSky 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
CoSky 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
CoSky 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !

软件简介

CoSky 是一个基于 Redis 的服务治理平台(服务注册/发现 & 配置中心)。

Consul + Sky = CoSky

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

服务注册与发现

CoSky-Discovery

配置中心

CoSky-Configuration

CoSky-Mirror

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

CoSky-Mirror

CoSky-Mirror-Unified

Examples

Service Consumer --RPC--> Service Provider Examples

安装

Gradle

Kotlin DSL

    val coskyVersion = "1.1.0";
    implementation("me.ahoo.cosky:spring-cloud-starter-cosky-config:${coskyVersion}")
    implementation("me.ahoo.cosky:spring-cloud-starter-cosky-discovery:${coskyVersion}")

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.1.0</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>
  </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.1.0.tar

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

方式二:在 Docker 中运行

docker pull ahoowang/cosky-rest-api:1.1.0
docker run --name cosky-rest-api -d -p 8080:8080 --link redis -e COSKY_REDIS_URI=redis://redis:6379  ahoowang/cosky-rest-api:1.1.0

MacBook Pro (M1)

请使用 ahoowang/cosky-rest-api:1.1.0-armv7

docker pull ahoowang/cosky-rest-api:1.1.0-armv7
docker run --name cosky-rest-api -d -p 8080:8080 --link redis -e COSKY_REDIS_URI=redis://redis:6379  ahoowang/cosky-rest-api:1.1.0-armv7

方式三:在 Kubernetes 中运行

apiVersion: apps/v1
kind: Deployment
metadata:
  name: cosky-rest-api
spec:
  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.1.0
          name: cosky-rest-api
          resources:
            limits:
              cpu: "1"
              memory: 640Mi
            requests:
              cpu: 250m
              memory: 512Mi
          volumeMounts:
            - mountPath: /etc/localtime
              name: volume-localtime
      volumes:
        - hostPath:
            path: /etc/localtime
            type: ""
          name: volume-localtime

---
apiVersion: v1
kind: Service
metadata:
  name: cosky-rest-api
  labels:
    app: cosky-rest-api
spec:
  selector:
    app: cosky-rest-api
  ports:
    - name: rest
      port: 80
      protocol: TCP
      targetPort: 8080

Dashboard

http://localhost:8080/dashboard

dashboard-dashboard

命名空间管理

dashboard-namespace

配置管理

dashboard-config

编辑配置

dashboard-config-edit

回滚配置

dashboard-config-rollback

从 Nacos 导入配置

dashboard-config-import

服务管理

dashboard-service

编辑服务实例信息

dashboard-service-edit

REST-API

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

Namespace

rest-api-namespace

  • /v1/namespaces
    • GET
  • /v1/namespaces/{namespace}
    • PUT
    • GET
  • /v1/namespaces/current
    • GET
  • /v1/namespaces/current/{namespace}
    • PUT

Config

rest-api-config

  • /v1/namespaces/{namespace}/configs
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}
    • GET
    • PUT
      • DELETE
  • /v1/namespaces/{namespace}/configs/{configId}/versions
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}/versions/{version}
    • GET
  • /v1/namespaces/{namespace}/configs/{configId}/to/{targetVersion}
    • PUT

Service

rest-api-service

  • /v1/namespaces/{namespace}/services/
    • GET
  • /v1/namespaces/{namespace}/services/{serviceId}/instances
    • GET
    • PUT
  • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}
    • DELETE
  • /v1/namespaces/{namespace}/services/{serviceId}/instances/{instanceId}/metadata
    • PUT
  • /v1/namespaces/{namespace}/services/{serviceId}/lb
    • GET

JMH-Benchmark

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

ConfigService

gradle cosky-config:jmh
# or
java -jar cosky-config/build/libs/cosky-config-1.1.0-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
# JMH version: 1.29
# VM version: JDK 11.1.01, OpenJDK 64-Bit Server VM, 11.1.01+9-LTS
# VM invoker: /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java
# VM options: -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/Users/ahoo/cosky/config/build/tmp/jmh -Duser.country=CN -Duser.language=zh -Duser.variant
# Blackhole mode: full + dont-inline hint
# Warmup: 1 iterations, 10 s each
# Measurement: 1 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 50 threads, will synchronize iterations
# Benchmark mode: Throughput, ops/time

Benchmark                                          Mode  Cnt          Score   Error  Units
ConsistencyRedisConfigServiceBenchmark.getConfig  thrpt       265321650.148          ops/s
RedisConfigServiceBenchmark.getConfig             thrpt          106991.476          ops/s
RedisConfigServiceBenchmark.setConfig             thrpt          103659.132          ops/s

ServiceDiscovery

gradle cosky-discovery:jmh
# or
java -jar cosky-discovery/build/libs/cosky-discovery-1.1.0-jmh.jar -bm thrpt -t 25 -wi 1 -rf json -f 1
# JMH version: 1.29
# VM version: JDK 11.1.01, OpenJDK 64-Bit Server VM, 11.1.01+9-LTS
# VM invoker: /Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home/bin/java
# VM options: -Dfile.encoding=UTF-8 -Djava.io.tmpdir=/Users/ahoo/cosky/discovery/build/tmp/jmh -Duser.country=CN -Duser.language=zh -Duser.variant
# Blackhole mode: full + dont-inline hint
# Warmup: 1 iterations, 10 s each
# Measurement: 1 iterations, 10 s each
# Timeout: 10 min per iteration
# Threads: 50 threads, will synchronize iterations
# Benchmark mode: Throughput, ops/time

Benchmark                                                Mode  Cnt          Score   Error  Units
ConsistencyRedisServiceDiscoveryBenchmark.getInstances  thrpt        76894658.867          ops/s
ConsistencyRedisServiceDiscoveryBenchmark.getServices   thrpt       466036317.472          ops/s
RedisServiceDiscoveryBenchmark.getInstances             thrpt          107778.244          ops/s
RedisServiceDiscoveryBenchmark.getServices              thrpt          106920.412          ops/s
RedisServiceRegistryBenchmark.deregister                thrpt          114094.513          ops/s
RedisServiceRegistryBenchmark.register                  thrpt          109085.694          ops/s
RedisServiceRegistryBenchmark.renew                     thrpt          127003.104          ops/s
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (3)

加载中
看不懂这句话是什么意思,Consul + Sky = CoSky,是说这个软件不仅依赖redis,还依赖consul注册中心,还依赖sky软件吗?
06/04 13:14
回复
举报
Ahoo-Wang软件作者
Consul + Sky = CoSky 是指取名由来。
06/06 08:05
回复
举报
有点意思
05/20 11:53
回复
举报
更多评论
发表了资讯
昨天 11:21

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

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

0
3
发表了资讯
06/11 11:18

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

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

0
4
发表了资讯
06/04 11:43

CoSky 1.1.5 发布 - 基于 Redis 的服务治理平台

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

0
6
发表了资讯
06/03 08:05

CoSky 1.1.3 发布 - 基于 Redis 的服务治理平台

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

1
6
发表了资讯
06/02 12:48

CoSky 1.1.2 发布 - 基于 Redis 的服务治理平台

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

0
4
发表于数据库专区
06/01 23:21

CoSky 1.1.0 发布 - 基于 Redis 的服务治理平台

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

0
4
发表了资讯
05/30 15:47

CoSky(Govern-Service) 1.0.0 发布,基于 Redis 的服务治理平台

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

1
11
发表了资讯
05/19 23:24

Govern Service - 0.9.19 发布 - 基于 Redis 的服务治理平台

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

0
2
发表了资讯
05/17 00:01

Govern Service - 0.9.13 发布 - 基于 Redis 的服务治理平台

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

0
4
发表了资讯
05/15 16:28

Ahoo Govern Service - 0.9.6 发布 - 基于 Redis 的服务治理平台

Govern Service 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis (相信你已经部署了Redis),不用给运维部署带来额外的成本与负担。 借助于 Redis 的高性能, * Govern Service* 提供了超高TPS&QPS。Govern Service 结合本地进程缓存策略 + Redis PubSub,实现实时进程缓存刷新,兼具无与伦比的QPS性能、进程缓存与 Redis 的实时一致性。 更新内容(0.9.6) 新增支持配置导入API (...

0
6
发表了资讯
05/15 00:54

Govern Service - 0.9.3 发布 - 基于 Redis 的服务治理平台

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

1
2
发表了资讯
05/14 01:12

Govern Service - 0.9.2 发布 - 基于 Redis 的服务治理平台

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

0
8
发表了资讯
05/12 22:39

Govern Service - 0.9.0 发布 - 基于 Redis 的服务治理平台

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

0
5
发表了资讯
05/09 09:03

Govern Service - 0.8.2 发布 - 基于 Redis 的服务治理平台

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

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2020/03/19 20:25

Mechanisms to govern license usage with AWS License Manager

https://amazonaws-china.com/blogs/mt/mechanisms-to-govern-license-usage-with-aws-license-manager/ AWS License Manager streamlines the process of bringing software vendor licenses to the cloud. As you build your applications in AWS that use third party licenses or move your on-premises workloads to AWS, you can save costs by using bring-your-own-license (BYOL) opportunities. This can be done by ...

0
0
发表了博客
2020/03/19 20:04

Mechanisms to govern license usage with AWS License Manager

https://amazonaws-china.com/blogs/mt/mechanisms-to-govern-license-usage-with-aws-license-manager/ AWS License Manager streamlines the process of bringing software vendor licenses to the cloud. As you build your applications in AWS that use third party licenses or move your on-premises workloads to AWS, you can save costs by using bring-your-own-license (BYOL) opportunities. This can be done by ...

0
0
发表了博客
2020/03/19 20:24

Govern how your clients interact with Apache Kafka using API Gateway

https://amazonaws-china.com/blogs/big-data/govern-how-your-clients-interact-with-apache-kafka-using-api-gateway/ At some point, you may ask yourself: How can I implement IAM authentication or authorization to Amazon Managed Streaming for Apache Kafka (MSK)? How can I protect my Apache Kafka cluster from traffic spikes based on specific scenarios without setting quotas on the cluster? How can I ...

0
0
发表了博客
2020/03/19 20:03

Govern how your clients interact with Apache Kafka using API Gateway

https://amazonaws-china.com/blogs/big-data/govern-how-your-clients-interact-with-apache-kafka-using-api-gateway/ At some point, you may ask yourself: How can I implement IAM authentication or authorization to Amazon Managed Streaming for Apache Kafka (MSK)? How can I protect my Apache Kafka cluster from traffic spikes based on specific scenarios without setting quotas on the cluster? How can I ...

0
0
发表了博客
2019/03/26 16:00

Headless Service 和Service

定于spec:clusterIP: None 还记得Service的Cluster IP是做什么的吗?对,一个Service可能对应多个EndPoint(Pod),client访问的是Cluster IP,通过iptables规则转到Real Server,从而达到负载均衡的效果(实现原理请见这里)。如下: 有头service kubectl get service NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service 10.107.124.218 192.168.128.158 80/...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
3 评论
19 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部