欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

springcloud之Config初识篇—客户端批量热加载

程序员文章站 2022-07-03 19:54:25
...

上一篇中我们实现服务不需重启即可获取到远程仓库配置文件的最新信息,但是依然存在两个问题:

  • 微服务数量多,每个微服务都做一次加载请求对于开发者而言仍然是一个不小的工作量
  • 分布式系统的理念中微服务只专注于处理自身的业务其他的琐碎业务并不关心,而此时我们需要每个服务都做加载操作从某种程度上违法了微服务的单一性原则

希望实现的模式:

  • 一次请求所有微服务都实现热部署
  • 一个服务去请求各个微服务仍然只关心自身的业务需求

具体实现:

通过加入rabbitmq实现此功能

1、添加maven依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>

2、添加yml

spring:
  rabbitmq:
      host: 127.0.0.1
      username: 
      password: 
      port: 5672
      virtual-host: /adminPy

3、configServer执行请求

http://localhost:8100/actuator/bus-refresh  Post请求

PS:上述配置configServer和configClient都要添加。

此时我们将加载的操作交由configServer来操作这样微服务就不用再做加载请求只专注于自身的业务即可。

简示图:

springcloud之Config初识篇—客户端批量热加载

PS:根据git自身的回调机制Webhooks我们还可以实现远程仓库更新文件后自动触发微服务进行热部署,但是这样做对项目来说风险较大,万一上传的文件有问题服务自动加载会出现无法预估的问题(19年某知名大厂云服务有次出问题据说就是因为开发人员改错了某个配置文件),所以还是建议人为控制配置文件的加载以此降低项目运行时可能存在的风险。

相关标签: springcloud config