Spring-cloud config注册中心扩展

我不是女神ヾ 2022-03-21 06:43 328阅读 0赞

Spring-cloud config注册中心扩展

1. 使用自定义读取配置源,基于mysql的配置读取实现

2. 设计简述

  1. 基于IP、应用名称、LABEL、Profile获取配置

    1.1) IP主要用于区分不同区域获取不同配置信息

    1.2) 应用名称+Label+profile遵循原spring-cloud config的设计

  2. 表结构设计,参考:configMysql.sql文件

    2.1) 维护应用与区域之间的关系,即在获取配置时,依据请求IP查询所属区域对应的配置信息。

    2.2) 抽象出具体配置项、配置组、应用配置信息。即配置组可挂多个配置项,应用环境配置挂多个配置组,以达到资源共享。

    2.3) 支持单个服务私有配置

    2.4) 维护客户端连接信息,提供服务的IP和端口

  3. 整体设计

    3.1) custom-config-server为服务端,单独部署启动,也可以集成到自己的应用,直接使用@CustomEnableConfigServer注解加上spring jdbc的配置即可:

    spring:
    application:

    1. name: winner-config-server

    mysql

    datasource:

    1. url: jdbc:mysql://192.168.206.210:3306/config_center?useSSL=false
    2. username: admin
    3. password: ***
    4. driver-class-name: com.mysql.jdbc.Driver
    5. # 使用druid数据源
    6. type: com.alibaba.druid.pool.DruidDataSource

3.2) custom-config-service为Rest服务端,提供配置、应用、区域等维护的API,可单独部署应用也可以集成到web工程中

3.3) custom-config-web 提供前端的页面管理

3.4) custom-config-client 客户端jar包

3.5) custom-starter-config 客户端引用该工程即可

3.6) 客户端查询配置核心时序图,参考:配置中心查询核心时序图.png

3.7) 客户端刷新实现简介:

A. 改造原springcloud client,在发起restTemplate的时候,将客户端服务的端口上报到配置服务端,并添加refresh刷新的接口,其实际是调用了ContextRefresher.refresh()方法

B. 配置服务端保存应用+环境+应用服务的IP:PORT信息到数据库

C. 配置管理界面修改应用配置,进行发布配置刷新客户端配置

D. 客户端引用starter-config jar包,并在需要刷新的配置类上添加@RefreshScope注解。custom-config-simple使用方法

E. 服务端发起刷新配置应用,通过应用+环境查找该应用下提供的所有应用服务,调用refresh刷新客户端的配置,如果调用失败标记该服务下线,下一次不进行刷新操作

F. springcloud的刷新参考资料:

数据源刷新参考

Spring Cloud Config 是如何实现热更新的

配置刷新基本流程

3.**配置中心高可用方案理论**

既然使用spring-cloud套件,可结合eureka注册中心来实现高可用。其他详细设计可参考携程开源的apollo的高可用设计

参考代码地址:GitHub

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读