Typecho合集站

一个喜欢Typecho站长搭建的站点,为能服务更多typecho用户

Govern Service 基于 Redis 的服务治理平台

Govern Service 基于 Redis 的服务治理平台(服务注册/发现 & 配置中心)

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

安装

Gradle

Kotlin DSL

val governVersion = "0.9.13";
implementation("me.ahoo.govern:spring-cloud-starter-config:${governVersion}")
implementation("me.ahoo.govern:spring-cloud-starter-discovery:${governVersion}")

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>
<govern.version>0.9.13</govern.version>
</properties>

<dependencies>
<dependency>
<groupId>me.ahoo.govern</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>${govern.version}</version>
</dependency>
<dependency>
<groupId>me.ahoo.govern</groupId>
<artifactId>spring-cloud-starter-discovery</artifactId>
<version>${govern.version}</version>
</dependency>
</dependencies>

</project>

bootstrap.yml (Spring-Cloud-Config)

spring:
application:
name: ${service.name:govern-rest-api}
cloud:
govern:
namespace: ${govern.namespace:govern-{system}}
config:
config-id: ${spring.application.name}.yml
redis:
mode: ${govern.mode:standalone}
url: ${govern.redis.uri:redis://localhost:6379}
logging:
file:
name: logs/${spring.application.name}.log

REST-API Server (
Optional
)

安装 REST-API Server

方式一:下载可执行文件

下载 rest-api-server

解压 rest-api-0.9.13.tar

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

方式二:Docker run

docker
2b14
pull ahoowang/govern-service:0.9.13
docker run --name govern-service -d -p 8080:8080 --link redis -e GOVERN_REDIS_URI=redis://redis:6379  ahoowang/govern-service:0.9.13

MacBook Pro (M1)

请使用 ahoowang/govern-service:0.9.13-armv7

docker pull ahoowang/govern-service:0.9.13-armv7
docker run --name govern-service -d -p 8080:8080 --link redis -e GOVERN_REDIS_URI=redis://redis:6379  ahoowang/govern-service:0.9.13-armv7

http://localhost:8080/dashboard

Dashboard

Govern Service 基于 Redis 的服务治理平台

命名空间管理

Govern Service 基于 Redis 的服务治理平台

配置管理

Govern Service 基于 Redis 的服务治理平台

Govern Service 基于 Redis 的服务治理平台

Govern Service 基于 Redis 的服务治理平台

Govern Service 基于 Redis 的服务治理平台

服务管理

Govern Service 基于 Redis 的服务治理平台

Govern Service 基于 Redis 的服务治理平台

REST-API

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

Namespace

Govern Service 基于 Redis 的服务治理平台

  • /v1/namespaces/{namespace}

    PUT
  • GET
  • /v1/namespaces/current

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

    PUT
  • Config

    Govern Service 基于 Redis 的服务治理平台

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

    Govern Service 基于 Redis 的服务治理平台

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

    ConfigService

    gradle config:jmh
    # JMH version: 1.29
    # VM version: JDK 11.0.11, OpenJDK 64-Bit Server VM, 11.0.11+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/govern-service/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 discovery:jmh
    # JMH version: 1.29
    # VM version: JDK 11.0.11, OpenJDK 64-Bit Server VM, 11.0.11+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/govern-service/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


    上一篇 : Git 系列教程(9) 打标签
    下一篇 : antirez辞去Redis项目领导者职务

    发表新评论