SpringCloud Bus消息总线
是什么?
Springcloud Bus 是用来分布式系统的节点与轻量级消息系统链接起来的框架,它整合了java的事务处理机制和消息中间建的功能,springcloud Bus 目前只支持 rabbitMq,Kafka
能做什么?
Spring Cloud Bus能管理和传播扮布式系统间的消息,就像- 个份布式执行器,可于广播状态更改、事件推送等, 也可以当作微服务间的通信通道
根据上面的图总结出来
-
提交代码触发post给客户端A发送bus/refresh
-
客户端A接收到请求从Server端更新配置并且发送给Spring Cloud Bus
-
Spring Cloud bus接到消息并通知给其它客户端
-
其它客户端接收到通知,请求Server端获取最新配置
-
全部客户端均获取到最新的配置
这样子虽然可以实现想要的效果,但是
- 打破了微服务的职责单一性。微服务本身是业务模块,它本不应该承担配置刷新的职责。
- 破坏了微服务各节点的对等性。
- 如果客户端ip有变化,这时我们就需要修改WebHook的配置。
所以改动一下
这时Spring Cloud Bus做配置更新步骤如下:
- 提交代码触发post给Server端发送bus/refresh
- Server端接收到请求并发送给Spring Cloud Bus
- Spring Cloud bus接到消息并通知给其它客户端
- 其它客户端接收到通知,请求Server端获取最新配置
- 全部客户端均获取到最新的配置
这样就能做到一处刷新处处生效
有时候我们不需要全部通知生效可以通过
curl -X POST "http://localhost:3344/actuator/bus-refresh/config-client:3355"指定生效的客户端名 config-client(服务名)
Q.E.D.
Comments | 0 条评论