Spring-cloud config注册中心扩展

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:
    name: winner-config-server
  #mysql
  datasource:
    url: jdbc:mysql://192.168.206.210:3306/config_center?useSSL=false
    username: admin
    password: ***
    driver-class-name: com.mysql.jdbc.Driver
    # 使用druid数据源
    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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值