一、概述
SpringCloud(H版)二阶段学习---Config分布式配置中心上一步已经实现了手动版配置文件刷新,通过消息总线,可实现分布式自动刷新配置功能。SpringCloud Bus+SpringCloud Config使用可以实现配置的动态刷新。Bus支持两种消息代理:RabbitMQ和Kafka。
总线:在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。
基本原理:ConfigClient实例都监听MQ中同一个topic(默认是springCloudBus)当一个服务刷新数据时,它会把这个信息放入到Topic中,这样其他监听同一Topic的服务就能得到通知,然后去更新自身的配置。
Github代码:https://github.com/Simple-Coder/cloud2020
二、Bus动态刷新全局广播
一次发送,处处生效。当修改配置文件后,需要请求一次ConfigServer端即(curl -X POST "http://localhost:3344/actuator/bus-refresh")当然可以通过Github的Webhook实现(注意:服务端必须保证是公网IP否则不生效)可参考鄙人博客:SpringCloud全家桶学习之消息总线---SpringCloud Bus
三、Bus动态刷新定点通知
需求:不想全部通知,定点通知(只通知3355,不通知3366)指定具体某一个实例而不是全部
公式:http://localhost:配置中心端口/actuator/bus-refresh/{destination},/bus/refresh发给Config Server通过destination参数指定需要更新配置的服务或实例
destination参数格式:服务名:端口号
实现了只刷新3355客户端,3366客户端这样的定点通知。