SpringCloudBus作用与原理

admin 2026-01-26 02:24:23 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: SpringCloudBus是基于消息中间件的分布式消息总线,用于微服务配置热更新与广播。文章建议采用服务端通知模式以保持微服务职责单一,并提供配置代码示例。此外介绍了针对特定实例或集群的局部刷新机制,提升了配置管理的精细度与灵活性。 综合评分: 80 文章分类: 其他


cover_image

Spring Cloud Bus作用与原理

原创

静观云起 静观云起

码云精炼

2026年1月24日 15:31 广东

Spring Cloud Bus是Spring Cloud生态中的一个分布式消息总线组件,主要用于在微服务架构中实现配置变更的广播与通知,或者进行跨服务的事件通信。

一 主要作用

1. 动态刷新配置****

当使用Spring Cloud Config做集中配置管理时,如果某个配置发生了变化,可以通过Spring Cloud Bus将配置更新的指令广播到所有相关的微服务实例,从而触发这些服务自动刷新配置,无需手动重启每个服务。常配合/actuator/bus-refresh端点使用,实现配置热更新

2. 事件广播与通信

除了配置刷新,也可以用来在微服务集群中广播自定义事件,实现服务间的轻量级事件驱动通信

二 核心原理

基于消息中间件(如RabbitMQ、Kafka)实现消息的广播。

当某个服务节点触发配置更新(比如调用bus-refresh),该事件会通过消息总线发送到所有连接到总线的服务,收到事件的服务会执行相应的逻辑。

三 实时配置刷新

  1. 客户端发起通知

借助Spring Cloud Bus‌的广播功能,让Config Client‌都订阅配置更新事件。当配置更新时,触发其中一个端的更新事件,Spring Cloud Bus就把此事件广播到其他订阅客户端,以此来达到批量更新。

<!-- spring cloud starter bus amqp依赖,默认用rabbitmq --><dependency>&nbsp; &nbsp;&nbsp;<groupId>org.springframework.cloud</groupId>&nbsp; &nbsp;&nbsp;<artifactId>spring-cloud-starter-bus-amqp</artifactId></dependency>

添加配置文件

# 消息队列 rabbitmq:host: 192.168.10.101port: 5672username: guestpassword: guestvirtual-host: /# 度量指标监控与健康检查management:&nbsp; endpoints:&nbsp; &nbsp; web:&nbsp; &nbsp; &nbsp;&nbsp;# 访问端点根路径,默认为/actuator&nbsp; &nbsp; &nbsp; base-path: /actuator &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; exposure:&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;# 需要开启的端点&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;include: bus-refresh

客户端发起通知缺陷

打破了微服务的职责单一性。微服务本身是业务模块,它本不应该承担配置刷新的职责。

破坏了微服务各节点的对等性。

存在一定的局限性。例如,微服务在迁移时,它的网络地址常常会发生变化,此时如果想要做到自动刷新,就不得不修改Webhook的配置

  1. 服务端发起通知

为了解决客户端发起通知的缺陷,采用服务端发起通知

Webhook监听被触发,给ConfigServer发送bus-refresh请求刷新配置。

ConfigServer发送消息给Bus。

Bus接收消息后广播通知所有ConfigClient。

各ConfigClient收到消息重新读取最新配置。

3.局部刷新

假设有这样一种场景,我们开发了一个新的功能,此时需要对该功能进行测试。我们只希望其中一个微服务的配置被更新,等功能测试完毕,正式部署线上时再更新至整个集群。但是由于所有微服务都受Spring Cloud Bus的控制,我们更新了其中一个微服务的配置,就会导致其他服务也被通知去更新配置。这时候局部刷新的作用就体现出来了。

刷新单个指点微服务

请求地址:/bus-refresh/{微服务名}:{端口号}

请求方式:post

刷新指定集群

假设现在功能测试完毕,需要正式部署线上更新至整个集群。但是由于Spring Cloud Bus控制着多个微服务集群(订单微服务、商品微服务等),而我们只想更新指定集群下的配置,这个时候就可以使用Bus提供的通配符更新方案。

****请求地址:/bus-refresh/{微服务名}:**

请求方式:post

****


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:码云精炼 静观云起 静观云起《Spring Cloud Bus作用与原理》

SpringCloudBus作用与原理 网络安全文章

SpringCloudBus作用与原理

文章总结: SpringCloudBus是基于消息中间件的分布式消息总线,用于微服务配置热更新与广播。文章建议采用服务端通知模式以保持微服务职责单一,并提供配置
评论:0   参与:  0