目录
3、对springcloud-config-server项目进行改造
3.1、修改springcloud-config-server项目的pom文件,添加消息总线支持和监控模块
3.2、修改yml配置,添加RabbitMQ配置和消息总线刷新端点
4、对springcloud-config-client项目进行改造
4.1、修改springcloud-config-server项目的pom文件,添加消息总线支持
4.3、RabbitMQ Server\rabbitmq_server-3.7.9\sbin\rabbitmq-server.bat启动RabbitMQ服务器
4.4、启动config-server一台、启动config-client两台,并注册到同一个注册中心
4.5、 修改远程配置后使用postman手动发送post请求,主动刷新config-server端项目
1、Bus消息总线介绍:
在微服务框架中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线。
SpringCloud中也有对应的解决方案,SpringCloud Bus将分布式的节点用轻量级的消息代理连接起来,可以很容易搭建消息总线,配合SpringCloud config实现微服务应用配置信息的动态实时更新。
消息总线其实是通过消息中间件主题模式,它使用广播消息的机制被所有在注册中心的微服务实例进行监听和消费,以广播形式将消息推送给所有注册中心服务列表。
消息总线框架底层是MQ实现的,引入相应的jar包,底层框架实现好了,每个服务里面引入了相应的jar包后,自动创建队列绑定交换机等等,现成的有:ActiveMQ、Kafka、RabbitMQ、RocketMQ
2、使用消息总线实现配置自动更新
2.1、方案一架构图:
当远程仓库配置信息内容被修改后,只需要通知一个config client发送post请求/bus/refresh,然后该消息就会通过消息总线被其他的config client消费,而不需要每个config client去发送post请求获取最新配置信息
缺点:不可靠,如果当前接收post请求的config-client宕机或其他原因下线,而消息没有放到bus总线中,则其他的config-client则无法获取到配置中心最新的配置信息
2.2、方案二架构图(常用)
区别方案一,post请求发送到config-server中,由config-server将同步消息发送到bus总线中,config-client接收到消息后进行同步从而更新配置中心最新的配置信息
基于方案二,使用消息总线实现配置自动更新的方式是在配置config-server和config-client项目pom文件时添加springcloud bus模块和相应的MQ模块