其实在上一课我们已经接触过了消息总线,那就是 Spring Cloud Bus,这一课我们将继续深入研究 Spring Cloud Bus 的一些特性。
局部刷新
Spring Cloud Bus 用于实现在集群中传播一些状态变化(例如:配置变化),它常常与 Spring Cloud Config 联合实现热部署。上一课我们体验了配置的自动刷新,但每次都会刷新所有微服务,有些时候我们只想刷新部分微服务的配置,这时就需要通过 /bus/refresh
断点的 destination 参数来定位要刷新的应用程序。
它的基本用法如下:
/bus/refresh?destination=application:port
其中,application 为各微服务指定的名字,port 为端口,如果我们要刷新所有指定微服务名字下的配置,则 destination 可以设置为 application:例如:/bus/refresh/destination=eurekaclient:
,代表刷新所有名字为 EurekaClient 的微服务配置。
改进架构
在前面的示例中,我们是通过某一个微服务的 /bus/refesh
断点来实现配置刷新,但是这种方式并不优雅,它有以下弊端:
- 破坏了微服务的单一职责原则,微服务客户端理论上应只关注自身业务,而不应该负责配置刷新。
- 破坏了微服务各节点的对等性。
- 有一定的局限性。在微服务迁移时,网络地址时常会发生改变,这时若想自动刷新配置
来源:oschina
链接:https://my.oschina.net/u/4312837/blog/4637051