spring cloud原理_Spring Cloud Bus 原理简介和实现

一、原理简介

Spring Cloud Bus 使用轻量级的消息代理来连接微服务架构中的各个服务,可以将其用于广播状态更改(例如配置中心配置更改)或其他管理指令

通常会使用消息代理来构建一个主题,然后把微服务架构中的所有服务都连接到这个主题上去,当我们向该主题发送消息时,所有订阅该主题的服务都会收到消息并进行消费。

使用 Spring Cloud Bus 可以方便地构建起这套机制,所以 Spring Cloud Bus 又被称为消息总线。

Spring Cloud Bus 配合 Spring Cloud Config 使用可以实现配置的动态刷新。

目前 Spring Cloud Bus 支持两种消息代理:RabbitMQ 和 Kafka。

下面以 RabbitMQ 为例来演示下使用Spring Cloud Bus 动态刷新配置的功能。

二、测试的配置文件准备

2840cd719c985e54e796f4941d2c4902.png

三、启动rabbitmq (上篇文章已介绍)

四、启动注册中心

7b5890facd51275792c4b0fd5d861797.png

五、启动配置中心

fa761e2da629a191c1f4504cb92320e6.png
992b36d1bf4c42be95c8d0f2e30c336b.png

六、启动配置客户端1

7749f6e50b77891160fd446346bf7615.png
049945bf75ef7721e3a6d854fd27d350.png

七、启动配置客户端2

0b07e7d26f9f4694ee8a58a7cb91fac0.png

八、动态刷新配置演示

我们先启动相关服务,启动eureka-server,以application-amqp.yml为配置启动config-server,以bootstrap-amqp1.yml为配置启动config-client,以bootstrap-amqp2.yml为配置再启动一个config-client,启动后注册中心显示如下:

5b51865dc3ee4ed20c6c16132c14a0d5.png

启动所有服务后,我们登录RabbitMQ的控制台可以发现Spring Cloud Bus 创建了一个叫springCloudBus的交换机及三个以 springCloudBus.anonymous开头的队列:

c4c3fcea8ad699d8537b8d0e9dcf0620.png
57d6c3eab6d627b72fcc7a65d62b2552.png

查询目前配置

a07da0c1708930f019b4544d87c96e88.png
913feaf33a00bf5eecef55151aa0198f.png

修改配置

6268ec0cafd76ca434196454ca06fb3d.png

刷新配置

3054eac9fa4b87d3bafe7af53156a024.png

再次查询

a89bc1a7e956f4230159b3662f419e18.png
7c1c7b607bc417306a46c61d5a24a3a0.png

如果只需要刷新指定实例的配置可以使用以下格式进行刷新:http://localhost:8904/actuator/bus-refresh/{destination} ,我们这里以刷新运行在9004端口上的config-client为例http://localhost:8904/actuator/bus-refresh/config-client:9004。

自动刷新

02178f3b5a642f35968ee24db7e4bc3e.png

九、项目源码地址

https://gitee.com/pingfanrenbiji/spring-cloud-repo.git

https://gitee.com/pingfanrenbiji/springcloud-learning.git

十、参考文章

https://juejin.im/post/5da70d1351882509615bea34

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值