服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - Govern Service 基于 Redis 的服务治理平台安装过程详解

Govern Service 基于 Redis 的服务治理平台安装过程详解

2021-08-04 15:09阿虎 Redis

Govern Service 是一个轻量级、低成本的服务注册、服务发现、 配置服务 SDK,通过使用现有基础设施中的 Redis 不用给运维部署带来额外的成本与负担,接下来通过本文给大家分享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

?
1
2
3
val governversion = "0.9.13";
   implementation("me.ahoo.govern:spring-cloud-starter-config:${governversion}")
   implementation("me.ahoo.govern:spring-cloud-starter-discovery:${governversion}")

maven

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?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)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

?
1
2
3
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

?
1
2
docker 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

?
1
2
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
get
/v1/namespaces/{namespace}
put
get
/v1/namespaces/current
get
/v1/namespaces/current/{namespace}
put

config

Govern Service 基于 Redis 的服务治理平台安装过程详解

/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

Govern Service 基于 Redis 的服务治理平台安装过程详解

/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

?
1
gradle config:jmh
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 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

?
1
gradle discovery:jmh
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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

作者:ahoo wang (阿虎)

github: https://github.com/ahoo-wang/

smartsql(高性能、高生产力,超轻量级的orm!): https://github.com/dotnetcore/smartsql

smartcode(不只是代码生成器!): https://github.com/dotnetcore/smartcode

govern service 基于 redis 的服务治理平台(服务注册/发现 & 配置中心): https://github.com/ahoo-wang/govern-service

govern eventbus 历经多年生产环境验证的事件驱动架构框架: https://github.com/ahoo-wang/govern-eventbus

以上就是govern service 基于 redis 的服务治理平台的详细内容,更多关于redis 服务治理的资料请关注服务器之家其它相关文章!

原文链接:https://www.cnblogs.com/Ahoo-Wang/p/govern-service.html

延伸 · 阅读

精彩推荐
  • RedisLinux Redis 的安装步骤详解

    Linux Redis 的安装步骤详解

    这篇文章主要介绍了 Linux Redis 的安装步骤详解的相关资料,希望大家通过本文能掌握如何安装Redis,需要的朋友可以参考下 ...

    carl-zhao3822019-11-08
  • RedisRedis存取序列化与反序列化性能问题详解

    Redis存取序列化与反序列化性能问题详解

    这篇文章主要给大家介绍了关于Redis存取序列化与反序列化性能问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参...

    这名字已经存在9742021-02-24
  • Redis聊一聊Redis与MySQL双写一致性如何保证

    聊一聊Redis与MySQL双写一致性如何保证

    一致性就是数据保持一致,在分布式系统中,可以理解为多个节点中数据的值是一致的。本文给大家分享Redis与MySQL双写一致性该如何保证,感兴趣的朋友一...

    mind_programmonkey6432021-08-12
  • RedisRedis分布式锁升级版RedLock及SpringBoot实现方法

    Redis分布式锁升级版RedLock及SpringBoot实现方法

    这篇文章主要介绍了Redis分布式锁升级版RedLock及SpringBoot实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以...

    等不到的口琴7802021-07-25
  • Redisredis启动,停止,及端口占用处理方法

    redis启动,停止,及端口占用处理方法

    今天小编就为大家分享一篇redis启动,停止,及端口占用处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 ...

    澄海单挑狂5152019-11-14
  • Redis在ssm项目中使用redis缓存查询数据的方法

    在ssm项目中使用redis缓存查询数据的方法

    本文主要简单的使用Java代码进行redis缓存,即在查询的时候先在service层从redis缓存中获取数据。如果大家对在ssm项目中使用redis缓存查询数据的相关知识感...

    caychen8962019-11-12
  • RedisRedis数据结构之链表与字典的使用

    Redis数据结构之链表与字典的使用

    这篇文章主要介绍了Redis数据结构之链表与字典的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    白泽来了4052021-08-03
  • Redis就这?Redis持久化策略——AOF

    就这?Redis持久化策略——AOF

    今天为大家介绍Redis的另一种持久化策略——AOF。注意:AOF文件只会记录Redis的写操作命令,因为读命令对数据的恢复没有任何意义...

    头发茂密的刘叔4052021-12-14