消息总线--Spring Cloud Bus

本文介绍了Spring Cloud Bus的用途,它作为分布式系统的消息代理,用于广播状态更改和事件推送。通过与Spring Cloud Config结合,实现了配置的动态刷新。文章详细讲解了消息总线的概念、工作原理,并提供了搭建rabbitmq环境、配置和使用Spring Cloud Bus的步骤,包括两种广播配置刷新的方式。最后,讨论了第一种方式可能带来的问题,并提供了测试和应用的实践指导。
摘要由CSDN通过智能技术生成

1 介绍
Spring Cloud Bus 可配置Spring Cloud Config 使用可实现配置的动态刷新
在这里插入图片描述

Spring Cloud Bus 能管理和传播分布式系统间的消息, 就像一个分布式执行器,可用于广播状态更改,事件推送等,也可以当做微服务间的通信通道

在这里插入图片描述
注意,这里年张图片,就代表两种广播方式
图1: 它是Bus直接通知给其中一个客户端,由这个客户端开始蔓延,传播给其他所有客户端

图2: 它是通知给配置中心的服务端,有服务端广播给所有客户端

2 为什么被称为总线
1)什么是总线
在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让系统中所有微服务实例连接起来,由于该主题中产生的消息会被所有实例监听和消费,所以称为消息总线,在总线上的各个实例,都可以方便的广播一些需要让其他连接在该主题的实例都知道的消息,
2)基本原理
ConfigClient 实例监听MQ中同一个topic(默认是SpringCloudBus)。当一个服务刷新数据时,它会把这个消息放到Topic中,这样其他监听同一个Topic的服务就能得到通知,然后去更新自身额配置

3 使用Spring Cloud Bus
结合config使用 https://editor.csdn.net/md/?articleId=123066812
3.1)搭建rabbitmq环境
3.2)创建configClient服务3355 3366
3.3)Bus广播的两种方式如上图
1)利用消息总线触发一个客户端/bus/refresh,而刷新所有客户端的配置
2)利用消息总线触发一个服务端ConfigServer的/bus/refresh,而刷新所有客户端的配置
第二种方式比较合适,因为第一种打破了微服务的单一性(因为微服务本身就是业务模块,不应该具有刷新功能) ,破坏了微服务各节点的对等性(有一个客户端额外承担刷新职责,其他模块只有业务职责),有一定的局限性(微服务在迁移时,它的网络地址会发生变更,如果做到自动刷新,需要做更多的修改)
3.4)修改服务端配置3344
3.4.1)引入pom

   <!--添加消息总线RabbitMQ支持-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值