微服务SpringCloud开弓之SpringCloud Bus消息总线「十一」

【项目实战】微服务消息总线Spring Cloud Bus入门介绍 Spring Cloud Bus 是一个用于管理和传播分布式系统配置变更的工具。Spring Cloud Bus 使用轻量级消息代理来连接分布式系统的各个节点。Spring Cloud Bus 提供了一种高效的方式来管理微服务架构中的配置更新和其他类型的服务间通信。通过这种方式,当某个服务实例的配置发生变化时(例如,通过Spring Cloud Config),这些变化可以快速传播到其他所有相关的服务实例上,而不需要每个服务都去轮询配置服务器来获取最新的配置信息。 阅读详情

SpringCloud Bus消息总线

1、针对问题:

  • 每次微服务都要执行一次post请求,手动刷新
  • 可否广播?一次通知,处处生效
  • 我们想大范围的自动刷新

2、概述

1、分布式自动刷新配置功能

2、SpringCloud Bus配合Springcloud Config使用可以实现配置的动态刷新

  • 是什么

springCloud Bus是用来将分布式系统的节点与轻量级消息系统连接起来的框架,它整合了java的事件处理机制和消息中间件的功能

Bus支持两种消息代理:RabbitMQ和kafka

在这里插入图片描述

  • 能干嘛

在这里插入图片描述

  • 什么叫总线
    在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个公用的消息主题,并让系统中的所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他链接在该主题行的实例都知道的消息。

  • 基本原来理:
    ConfigClient实例都监听MQ中的同一个topic(默认是SpringcloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到topic中,这样其它监听同一个topic的服务就能得到通知,然后去更新自身的配置。

消息中间件学习地址

3、RabbitMQ环境配置

erlang

下载安装RabbitMQ

在sbin目录下输入:

  • rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述

访问地址:

  • http://localhost:15672/

默认账号密码

  • guest
  • guest

4、SpringCloud Bus动态刷新全局广播

  • 必须先具备良好的RabbitMQ环境

  • 演示广播效果增加复杂度,再以3355为模板制作一个3366

    1、cloud-config-client-3366

    2、POM文件

     <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    </dependencies>
    

    3、YML

    server:
      port: 3366
    
    spring:
      application:
        name: config-client
      cloud:
        config:
          label: master  #分支名称
          name: config  #配置文件名称
          profile: dev  #读取后缀名称   上述三个综合http://localhost:3344/master/config-dev.yml
          uri: http://localhost:3344  #配置中心的地址
    
    eureka:
      client:
        register-with-eureka: true
        service-url:
          defaultZone: http://localhost:7001/eureka
    
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    

    4、主启动类

    @SpringBootApplication
    @EnableEurekaClient
    public class ConfigClientMain3366 {
    
        public static void main(String[] args) {
            SpringApplication.run(ConfigClientMain3366.class, args);
        }
    }
    

    5、controller

    @RefreshScope
    @RestController
    public class ConfigClientController {
    
        @Value("${config.info}")
        private String configInfo;  //要访问的3344上的信息
    
        @GetMapping("/configInfo")	//请求地址
        public String getConfigInfo(){
            return configInfo;
        }
    }
    
  • 设计思想

    1、利用消息总线触发一个客户端/bus/refresh,而刷新所有客户端的配置

    2、利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置

    利用方法二的原因:

    • 打破了微服务的职责单一性,因为微服务本身是业务模块,它不应该承担配置刷新的职责
    • 打破了微服务各个节点的对等性
    • 有一定的局限性。例如:微服务在迁移时,它的网络地址常常会发生变化,此时如果想要做到自动刷新,那就回增加更多的的修改
  • 给3344配置中心服务端添加消息总线支持

    1、修改pom文件

    #增加
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    

    2、修改YML

    server:
      port: 3344
    
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka
    spring:
      application:
        name: cloud-config-center
      cloud:
        config:
          server:
            git:
              uri: https://github.com/ClqStart/SpringCloud-config.git
              force-pull: true
              search-paths:
                - SpringCloud-config
    
          label: master
          
    ##新增消息队列并且暴露
      rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
    management:
      endpoints:
        web:
          exposure:
            include: 'bus-refresh'
    
  • 给3355、3366配置中心服务端添加消息总线支持

    1、POM

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-bus-amqp</artifactId>
    </dependency>
    

    2、yml

     rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
    
  • 测试

    1、修改GitHub上的配置文件增加版本

    2、发送post请求

    3、curl -X POST “http://localhost:3344/actuator/bus-refresh”

    4、一次发送处处生效

    结果

在这里插入图片描述

http://config-3344.com:3344/master/config-dev.yml

在这里插入图片描述
http://localhost:3355/configInfo

在这里插入图片描述

​ http://localhost:3366/configInfo

在这里插入图片描述

 命令行发送curl  -X POST "http://localhost:3344/actuator/bus-refresh"后

在这里插入图片描述
在这里插入图片描述

5、Springcloud Bus动态刷新定点通知

  • 指定具体某一实例生效而不是全部

  • 公式:http://lcoalhost:配置中心的端口号/actuator/bus-refresh/{destination}

  • /bus-refresh请求不再发送到具体的服务实例上,而是发给config server 。并通过destination参数类指定需要发送更新配置的服务或者实例

案例

我们只想刷新运行在3355端口上的config-client为例

curl -X POST “http://localhost:3344/actuator/bus-refresh/config-client:3355”

结果
在这里插入图片描述

!在这里插入图片描述

  • 通知总结

在这里插入图片描述

深入解析LVDS电平标准在LCD屏接口设计中的关键作用 本文深入解析了LVDS电平标准在LCD屏接口设计中的核心作用。文章不仅阐释了LVDS低电压差分信号的工作原理、关键电气参数及抗噪优势,还详细对比了VESA与JEIDA两种主流数据格式,并提供了从PCB布局布线到信号调试的实战避坑指南,是确保高速、稳定显示的关键技术参考。 阅读详情

相关推荐

碎碎念android eMMC【转】

本文转载自:https://blog.youkuaiyun.com/Fybon/article/details/44242549 一、/dev/blockroot@:/dev/block #lsbootdevicemmcblk0mmcblk0p1mmcblk0p10…….mmcblk0p18mmcblk0p19mmcblk0p2mmcblk0p20……mmcblk0p29mmcblk0p3mmcblk0p3...

zzb2760715357的博客 376

微服务-消息总线 SpringCloud Bus

1. why 上篇中的配置中心服务端可以实现从远程仓库拉取实时变更的配置, 但是客户端无法直接实现配置更新, 需要向客户端发送一个post请求刷新配置(/actuator/refresh), 客户端微服务少的时候还能接受, 一旦有成百上千个客户端微服务, 不可能让运维工程师向每个客户端发送一次post请求手动刷新配置. 那么, 可否通过一种广播技术大范围的自动刷新,实现一次通知, 处处生效呢? 那就是下面我要写的消息总线技术. 2. 什么是消息总线 在微服务架构的系统中,通常会使用轻量级的消息代理来构建一

学习技术的路上不断沉淀自己 2437

阿里奇门接口联调全流程详解:从沙箱自测到正式上线的保姆级攻略

本文详细解析阿里奇门接口联调的全流程,从沙箱自测到正式上线的关键步骤与避坑指南。涵盖环境配置、业务场景测试、跨团队协作、灰度发布及生产运维监控,帮助开发者高效完成API对接,确保供应链协同系统的稳定运行。特别适合首次接触奇门对接的技术负责人参考。

weixin_42535461的博客 413

SpringCloud微服务(七)——Bus服务消息总线

Spring Cloud Bus是消息总线,广播通知都可以集成,不止用于实现配置的动态刷新。

qq_43409401的博客 2474

一文了解向量数据库在RAG中扮演的角色

向量数据库:AI新纪元的基石。探索如何通过这一创新技术优化RAG,提高语言模型的信息处理能力

2401_82452722的博客 2451

基于VH6501的Busoff测试

摘要: 本文介绍使用VH6501和CANoe工具测试ECU的Busoff Recovery机制。通过干扰报文触发Busoff状态,验证快恢复(连续32次,间隔100ms)和慢恢复(间隔1000ms)的时序及次数是否符合要求。测试步骤包括硬件配置、干扰参数设置及Trace窗口错误帧分析,最终通过错误帧间隔判定恢复机制的正确性。

酒酿丸子的博客 1038

消息总线在微服务中的应用

Actuator 是一个轻巧的监控组件,通过 REST 接口的方式可以供外部调用,访问服务节点下的 “/actuator”路径可以查看当前开放的服务。Actuator 也是一个相当贴心的组件,当你引入的其他组件依赖到 pom 中以后(比如 Config 或 BUS),这部分组件会通过将自己的核心服务提供出去(比如 Config 和 BUS 的 refresh 功能)。假如同学们访问/actuator后只能看到health和info。

程序员波特 1383

车载机器人终极解决方案:从功能叠加到生态融合的颠覆性变革

本文提出一种融合智能汽车与家居技术的车载机器人架构。其创新点包括:1)基于多模态传感器的拟人化硬件设计,实现声源定位误差<5°、体温检测精度±0.3℃;2)跨模态情感计算引擎,综合面部表情、心率等数据构建三维情绪模型;3)协议自适应中间件,支持小米、华为等多品牌智能家居设备即插即用;4)环境自适应舵机控制,-30℃环境下扭矩保持率达92.5%。测试数据显示,该方案使交互步骤减少60%,用户满意度提升58%,日均使用时长增加2.3倍,为"人-车-家"生态融合提供了可行技术路径。

qq_42671193的博客 1123

微服务之消息总线

简介 在上篇文章《微服务之配置中心》中写到,客户端可从服务端获取配置信息,当Git仓库中的配置文件修改后,为了让客户端获取最新的配置信息,可以通过执行refresh操作进行手动刷新。但是这样有问题,当客户端很多时(随之系统的不断扩大),如果需要每个客户端都执行一遍,那就蛋疼了,显然这种方案就不适合了。Spring Cloud作为微服务架构的一个综合解决方案,也提供了对应的解决方案Spring Cloud Bus,即消息总线。 这里要理解一个概念,消息总线。简单理解就是一个消息中心,众多微服务实例可以连接

u012794845的专栏 2106

Apollo Planning决策规划算法代码详细解析 (1):Scenario选择

本文重点讲解Apollo代码中怎样配置Scenario以及选择当前Scenario,Scenario决策是Apollo规划算法的第一步,本文会对代码进行详细解析,也会梳理整个决策流程,码字不易,喜欢的朋友们麻烦点个关注与赞。 在本文你将学到下面这些内容: 规划器planer的种类; 规划器planer的主要函数及逻辑; 场景管理类ScenarioManager的运行机制; 场景注册方法; 场景决策流程,如何选择当前场景 详细的apollo决策规划代码分析 代码具体过程如下: 1、Scenar

自动驾驶Player的博客 1万+

27、物联网中的量子密钥分发:安全通信新范式

本文探讨了物联网(IoT)快速发展所带来的安全挑战,并提出量子密钥分发(QKD)作为应对新兴威胁的新范式。文章详细介绍了QKD的基础原理、BB84协议的实现流程以及其在物联网中的应用前景,同时强调了安全专业人员提升技能、制定标准化指南以及跨学科合作的重要性。通过利用量子力学特性,QKD能够提供更高的通信安全性,抵御量子计算等未来威胁,为物联网的安全发展提供保障。

tequila的博客 155

微服务架构spring cloud - 消息总线Bus(八)

1.什么是消息总线 由于配置信息的变更或者其他的一些管理操作,所以需要消息总线。消息总线的意思是使用轻量级的消息代理来构建一个共用的的消息主题让系统中所有的微服务实例都连接上来,该主题中产生的消息会被所有实例监听和消费。 2.消息代理 消息代理是一种消息验证、传输、路由的架构模式。它是一个中间件产品,它的核心是一个消息的路由程序,用来实现接受和分发消息,并根据设定好的消息处理流来转发给正确的...

m0_37834471的博客 1611

【占用网络】OccNet: Scene as Occupancy 适用于检测、分割和规划任务 ICCV2023

本文分享“占用网络”方案中,具有代表性的方法:OccNet。它以多视角视觉为核心,首先生成BEV特征,然后通过级联结构和时间体素解码器重建生成3D占用特征。构建一个通用的“3D占用编码特征”,用以表示3D物理世界。这样的特征描述可以应用于广泛的自动驾驶任务,包括检测、分割和规划。

黎国溥 3360

Spring Cloud的原理涉及多个组件和概念

此外,Spring Cloud还有两代实现,分别是Spring Cloud Netflix和Spring Cloud Alibaba。每一代实现都包含了各自的服务治理组件,例如一代的Eureka和二代的Nacos,它们都扮演着服务注册与发现的关键角色。综上所述,Spring Cloud的原理主要涉及到服务的注册与发现、配置中心、服务网关、服务调用与负载均衡以及断路器等核心组件和功能。这些组件和功能共同协作,使得Spring Cloud能够支持构建稳定、高效、可扩展的分布式系统。

2401_83147072的博客 1268

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SpringCloud之消息总线

【前面的话】书接上文SpringCloud之Config,如果没有看过可以先移步去看一下。在上一篇文章中提到了配置刷新的问题,如果需要刷新配置就需要客户端执行refresh,我们可以利用webhook的机制每次提交代码发送请求来刷新客户端,当客户端越来越多的时候,需要每个客户端都执行一遍,这种方案就不太适合了。使用Spring Cloud Bus可以完美解决这一问题。 壹、Spring Cloud Bus的简介 Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例.

gman344的博客 1318

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【序列晋升】13 Spring Cloud Bus微服务架构中的消息总线

Spring Cloud Bus作为微服务架构中的关键组件,通过消息代理实现分布式系统中各节点的事件广播与状态同步,解决了传统微服务架构中配置刷新效率低下、系统级事件传播复杂等问题。它本质上是一个轻量级的事件总线,将Spring Boot Actuator的端点功能扩展到分布式环境中,使开发者能够通过统一的接口管理微服务集群的配置更新和状态变化。

愚者Turbo的博客 912

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

微服务实战(二):落地微服务架构到直销系统(构建消息总线框架接口)

从上一篇文章大家可以看出,实现一个自己的消息总线框架是非常重要的内容,消息总线可以将界限上下文之间进行解耦,也可以为大并发访问提供必要的支持。 消息总线的作用: 1.界限上下文解耦:在DDD第一波文章中,当更新了订单信息后,我们通过调用经销商界限上下文的领域模型和仓储,进行了经销商信息的更新,这造成了耦合。通过一个消息总线,可以在订单界限上下文的WebApi服务(来源微服务-生产者)更新了...

weixin_30651273的博客 151

Springcloud-消息总线-Bus

SpringCloud消息总线-Bus

TOMORROW6COME的博客 1794

Spring Cloud构建微服务架构(七)消息总线

先访问两个config-client-eureka的/from请求,会返回当前中的from属性。接着,我们修改中的from属性值,并发送POST请求到其中的一个。最后,我们再分别访问启动的两个config-client-eureka的/from请求,此时这两个请求都会返回最新的中的from属性。到这里,我们已经能够通过Spring Cloud Bus来实时更新总线上的属性配置了。

2401_86400095的博客 927

SpringCloud搭建微服务之Bus消息总线

Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,整合了Java的事件处理机制和消息中间件的功能,目前支持RabbitMQ和Kafka两种消息中间件。其功能是管理和传播分布式系统间的消息,用于广播状态更改、事件推送和微服务间通信通道,配合Spring Cloud Config使用可以实现配置的动态刷新

liu320yj的博客 1163

微服务SpringCloud(Bus 消息总线)整合十九

上一篇,我们学习了SpringCloud Config分布式配置中心,我们也发现了一个很恶心的问题,就是我们在配置中心更改了配置,需要手动给每一个客户端发送post请求,这样如果客户端有几百个,那不得手动发几百次请求。那有没有更好的方式呢?只需要发一次请求,就可以通知所有的客户端。这个就是我们今天要讲的SpringCloud Bus消息总线了。 SpringCloud Bus是什么? Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消

qq_35873436的博客 3550

SpringCloud |第七篇: 消息总线(Bus)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33873846的博客 95

微服务技术系列教程(32) - SpringCloud-消息总线

引言 之前有写过SpringCloud分布式配置中心的博客《微服务技术系列教程(24) - SpringCloud- 分布式配置中心》,主要讲解并实现了SpringCloud是如何在不启动服务器的情况下刷新配置文件,其原理图如下: 但是微服务里面有很多个ConfigClient的,如果一个全局配置文件修改了,那么每个CofingClient微服务都要主动去请求。 想想,有没有一种方法可以可以只通...

阿甘兄 753

springcloud微服务系列教程(八) 消息总线Bus

前言 上篇文章讲了Spring Cloud Config组件结合Eureka的案例,通过config server工程可以统一管理远程Git仓库的信息,并结合eureka组件来进行服务注册,这样其他的服务就可以进行调用从而获取远程的配置信息,同时也实现了config server工程的高可用。 通过这样的方式来管理配置信息固然方便,但仍有些许业务上的缺陷,那就是如果更改了远程仓库的配置信息,c...

703

良好的微服务架构能够取代企业服务总线吗?

原文链接:https://www.voxxed.com/blog/2015/01/good-microservices-architectures-death-enterprise-service-bus-part-one/ 品牌和营销:EAI vs. SOA vs. ESB vs. 微服务 让我们从面向服务架构(SOA)和企业服务总线(ESB)的一点历史开始,来看看为什么微服务变得如此流

虫虫的专栏 1万+

springcloud下的微服务-消息总线spring cloud bus

参考 史上最简单的SpringCloud教程 | 第八篇: 消息总线(Spring Cloud Bus) springcloud(九):配置中心和消息总线(配置中心终结版) Config Server——使用Spring Cloud Bus自动刷新配置 Spring cloud bus通过轻量消息代理连接各个分布的节点。这会用在广播状态的变化(例如配置变化)或者其他的消息指令。Sprin...

ahaha413525642的博客 1675
上一篇: 微服务SpringCloud开弓之SpringCloud config分布式配置中心「十」
下一篇: 微服务SpringCloud开弓之SpringCloud Stream消息驱动「十二」
漂吧
博客等级 码龄8年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值