十三、统一管理微服务配置之Spring Cloud Bus自动刷新配置

使用/refresh端点手动刷新配置

给客户端的 Controller 添加@RefreshScope注解,即可用POST访问/refresh端点刷新配置。

使用Sping Cloud Bus自动刷新配置

为什么使用Sping Cloud Bus

前面使用/refresh端点手动刷新配置,但是如果所有微服务节点的配置都需要手动去刷新的话,那必然是一个繁琐的工作,并且随着系统的不断扩张,会变得越来越难以维护。因此,实现配置的自动刷新是很有必要的。

Sping Cloud Bus简介

Spring Cloud Bus提供了批量刷新配置的机制,它使用轻量级的消息代理(例如 RabbitMQ、Kafka 等)连接分布式系统的节点,这样就可以通过Spring Cloud Bus广播配置的变化或者其他的管理指令。架构如图:
bus架构图

实现自动刷新
  1. 启动 rabbitMQ 服务。

  2. pom添加依赖:

1
2
3
4
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
  1. 的 Controller 添加@RefreshScope注解。

  2. bootstrap.yml中配置:

1
2
3
4
5
6
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
  1. 启动服务,POST请求/bus/refresh端点,会刷新配置文件。(可通过 Git 仓库的WebHooks实现自动刷新)。
局部刷新

可通过/bus/refresh端点的 destination 参数来定位要刷新的应用程序。

例如/bus/refresh?destination=ApplicationContextID

跟踪总线事件

设置spring.cloud.bus.trace.enabled=true,在/bus/refresh被请求之后,访问/trace端点可以访问总线事件。


该文章摘自《Spring Cloud 与 Docker 微服务架构实战(第二版)》

以上

LeoQin wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!
0%