介绍
Spring Cloud Bus 又被称为消息总线,它能够通过轻量级的消息代理(RabbitMQ、Kafka)将微服务架构中的各个服务连接起来,实现广播状态更改、事件推送等功能,还可以实现微服务之间的通信功能。Spring Cloud Bus 会使用一个轻量级的消息代理来构建一个公共的消息主题 Topic(springCloudBus),这个 Topic 中的消息会被所有服务实例监听和消费。当其中的一个服务刷新数据时,Spring Cloud Bus 会把信息保存到 Topic 中,这样监听这个 Topic 的服务就收到消息并自动消费。
动态刷新配置的原理
利用 Spring Cloud Bus 的特殊机制可以实现很多功能,其中配合 Spring Cloud Config 实现配置的动态刷新就是最典型的应用场景之一。当 Git 仓库中的配置发生了改变,我们只需要向某一个服务(既可以是 Config 服务端,也可以是 Config 客户端)发送一个 POST 请求,Spring Cloud Bus 就可以通过消息代理通知其他服务重新拉取最新配置,以实现配置的动态刷新。
动态刷新步骤
1、当 Git 仓库中的配置发生改变后,运维人员向 Config 服务端发送一个 POST 请求,请求路径为"/actuator/refresh"。
2、Config 服务端接收到请求后,会将该请求转发给服务总线 Spring Cloud Bus。
3、Spring Cloud Bus 接到消息后,会通知给所有 Config 客户端。
4、Config 客户端接收到通知,请求 Config 服务端拉取最新配置。
5、所有 Config 客户端都获取到最新的配置。