简 介
在前面Spring Cloud Config中,我们讲了如何在git配置中心发生变化时,如何不通过重启config client来达到获取更新之后的配置的目的。但是,这种方式只对单个Config-Client有效(往哪个Config-Client发送刷新请求,哪个配置就得到刷新,剩下的Config-Client获取的仍是旧的配置信息)。当Config-Client实例集群数量较多时,如果都要手动一个一个去刷新配置,不仅麻烦还容易遗漏。值得庆幸的是,我们可以借助Spring Cloud Bus来自动刷新集群的配置信息。
Spring Cloud Bus使用轻量级的消息代理(如RabbitMQ,Kafka)连接分布式系统的节点,可以以广播的形式将一些变更信息(如配置的变更)扩散到分布式链路中去。所以我们可以在Config-Server和Config-Client集群中加入Spring Cloud Bus,然后往某个Config-Server实例发送/actuator/refresh请求来刷新集群中所有实例的配置信息。
引入Spring Cloud Bus
Spring Cloud Bus支持RabbitMQ和Kafka等消息中间件,这里介绍Kafka的整合方式,关于RabbitMQ的整合方式可以参考这个链接。
Kafka下载
关于Kafka的下载,配置与启动参考链接
在Config-Server和Config-Client的pom中引入spring-cloud-starter-bus-kafka和spring-boot-starter-actuator依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
只需要这样就配置完成。
WebHooks
配合WebHooks可以实现自动配置刷新,在配置得到修改的时候它可以代替我们向Config-Server发送刷新请求。以码云为例,添加一个WebHooks: