简介
在学习配置中心Config之后可以知道,在微服务体系中,把各服务配置信息存放到Config中,通过向Config Server同步即可获得配置文件信息。每次我们存放在Config Server的信息被更改之后,都需要各微服务自行去同步,(比如重启,或者利用一种WebHook的机制刷新,稍后介绍)如果每次都手动同步,当微服务规模成百上千,这种方式显示是不合适的。那么通过刚才提到的WebHook机制(如不了解WebHook,请自行搜素),触发同步操作,借着我们今天学习的主角Spring Cloud Bus来同步发送通知给其它服务更新,看上去会简单很多,如下图,详细流程为:
Spring Cloud Bus将分布式系统的节点与轻量级消息代理连接起来,这可以用于广播状态更改,其本质是利用了MQ的广播机制在分布式系统中传播消息,目前常用的有Kafka和RabbitMQ,配置更改就是其典型应用场景。
根据上图,我们可以利用Spring Cloud Bus做配置更新,步骤如下:
- 提交配置文件到GIT,触发post请求给Config Client C,发送bus/refresh
- Config Client C接收到请求从Config Server更新配置并且发送给Spring Cloud Bus
- Spring Cloud Bus接收到消息并通知给其它Config Client
- 其它Config Client请求Config Server端获取最新配置
准备工作
首先下载安装RabbitMQ,根据操作系统等选择版本下载安装,我是Windows环境,下载了rabbitmq-server-3.8.2.exe安装版,安装RabbitMQ还需安装Erlang,安装之后可以在Windows服务里启停服务,测试一下,输入地址http://localhost:15672,用户名密码guest,可以正常登录就OK了
改造Config Client
由于Config Client要访问MQ,所以加入