SpringCloud - 分布式配置中心

  1. 抽取出各模块公共的部分,做到一处修改各处生效的目标
  2. 做到系统的高可用,修改了配置文件后可用在个模块动态刷新,不需要重启服务器

1. 配置中心服务端搭建

  1. jar包导入
    在这里插入图片描述

  2. 启动类
    在这里插入图片描述

  3. 分布式配置中心配置规则
    spring.cloud.config.server.git.uri=https://github.com/zg-andy/zg-config-repo
    spring.cloud.config.server.git.search-paths=config-repo
    spring.cloud.config.server.git.username=zg-andy
    spring.cloud.config.server.git.password=zgandy

  4. 客户端使用配置中心
    客户端只需要指定连接的服务端就行了,从服务端拉取配置信息
    1, jar包依赖
    在这里插入图片描述
    2, Properties配置
    spring.cloud.config.profile=dev
    spring.cloud.config.label=master
    #这种配置是configserver还单机情况,直接连接这个单机服务就行
    spring.cloud.config.uri=http://localhost:8085/

  5. 客户端快速失败和重试
    #如果连接不上获取配置有问题,快速响应失败
    spring.cloud.config.fail-fast=true
    在这里插入图片描述
    #默认重试的间隔时间,默认1000ms
    spring.cloud.config.retry.multiplier=1000
    #下一间隔时间的乘数,默认是1.1
    #spring.cloud.config.retry.initial-interval=1.1
    #最大间隔时间,最大2000ms
    spring.cloud.config.retry.max-interval=2000
    #最大重试次数,默认6次
    spring.cloud.config.retry.max-attempts=6
    在这里插入图片描述

  6. 配置信息的加密
    在配置中心中,有些信息是比较敏感的,比如密码信息,在配置密码信息的时候有必要对密码信息加密以免密码信息泄露,springcloud配置中心也支持配置信息加密的,这里一RSA非对称加密举例。
    1、本地生成秘钥对
    cd到jdk的keytool目录:D:\Program Files\Java\jdk1.8.0_92\jre\bin
    里面有一个keytool.exe可执行文件
    2、执行指令生成秘钥文件
    keytool -genkeypair -alias config-server -keyalg RSA -keystore config-server.keystore -validity 365
    指令执行成功后会在bin目录生成一个config-server.keystore文件,把该文件copy到配置中心服务工程中resources目录下。
    3、服务端工程配置
    Properties配置文件
    添加秘钥配置
    #加密配置
    encrypt.key-store.location=config-server.keystore
    encrypt.key-store.alias=config-server
    encrypt.key-store.password=123456
    encrypt.key-store.secret=123456

在这里插入图片描述
7. 密码加密和解密接口
在服务端中有提供对信息加密和解密接口的
加密接口:http://localhost:8085/encrypt?data=123456,post请求
在这里插入图片描述
解密接口:http://localhost:8085/decrypt,post请求
在这里插入图片描述
8. 代码仓库密文配置
在这里插入图片描述
9. 配置动态加载刷新
1、Environment的动态刷新
动态刷新其实要有一个契机,其实这个契机就是手动调用刷新接口,如果你想刷新哪台主机的配置,就调用哪台注解的刷新接口
刷新接口为:http://localhost:8088/actuator/refresh

2、@Value注入的属性动态刷新
其实前面在调用刷新接口后,@Value注入的属性是没有刷新的还是老的配置,这个也好理解,@Value注入的属性是项目启动就已经定了的。如果要使@Value属性也刷新,就必须要在类上面加上:@RefreshScope注解。

  1. 消息总线
    消息总线其实很简单,就是为了解决一点刷新的功能,在一个点调用请求刷新接口,然后所有的在消息总线中的端点都能接到刷新的消息,所有我们必须把每一个端点都拉入到消息总线中来。
    1、jar 在这里插入图片描述
    2、 properties配置
    其实就是连接mq的配置
    spring.rabbitmq.host=192.168.67.139
    spring.rabbitmq.port=5672
    spring.rabbitmq.username=admin
    spring.rabbitmq.password=admin
    #刷新配置url http://localhost:8081/actuator/bus-refresh
    spring.cloud.bus.refresh.enabled=true
    spring.cloud.bus.trace.enabled=true

通过这两步就已经完成了拉入消息总线的工作了。

如果要刷新配置,就只要调用任意一个消息总线端点调用刷新接口即可,其他的端点就会收到刷新配置的消息。
刷新接口:http://localhost:8085/actuator/bus-refresh

这个接口也可以配置到GitHub中,只要GitHub有代码变更,就会调用这个接口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当然这里配置的URL是你生产环境的外网地址,这样当你GitHub中修改了配置后,就会主动调用消息总线的刷新接口。

自定义分布式配置中心…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值