十三、统一管理微服务配置之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添加依赖:

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

  2. bootstrap.yml中配置:

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 微服务架构实战(第二版)》

以上


文章作者: Qliang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Qliang !
评论
 上一篇
十四、微服务跟踪之Spring Cloud Sleuth 十四、微服务跟踪之Spring Cloud Sleuth
为什么要实现微服务跟踪微服务之间通过网络进行通信,同时网络常常很脆弱,网络资源也有限。如果能够跟踪每个请求,了解请求经过哪些微服务、请求耗费时间、网络延迟、业务逻辑耗费时间等指标、那么久能更好地分析系统瓶颈、解决系统问题。 Sping Cl
2019-01-30
下一篇 
十二、统一管理微服务配置之Spring Cloud Config 十二、统一管理微服务配置之Spring Cloud Config
为什么要统一管理微服务配置对于Spring Boot单体应用,在启动时指定spring.profiles.active={profile}来加载不同环境下的配置。 在微服务架构中,这种方式未必适用,微服务架构对配置管理有着更高的要求,如:
2019-01-27
  目录