Springcloud Bus消息总线原理是实现详解

2023-02-23 0 3,993

目录

springcloud Bus

什么是springcloud Bus

  上一章的springcloud Bus是对分布式微服务的远程配置,但是有一个遗留的问题就是,Config客户端对远程配置的刷新需要手动使用post请求来完成,这就使得Config客户端动态刷新变得十分麻烦。于是消息总线springcloud Bus就是来解决这个问题的

什么是消息总线

  在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都链接上来。由于该主题中产生的消息都会被所有实例监听和消费,所以称它为消息总线。

Bus实现自动刷新的原理

  所有的Config客户端都监听MQ中同一个topic(默认是SpringCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其他监听同一Topic的服务就能得到通知,然后去更新自身的配置。
  由于springcloud Bus支持两种消息的代理(RabbitMQ和kafka),于是接下来的demo选择使用RabbitMQ 3.7.14,其他的消息中间件Bus暂不支持

RabbitMQ的下载配置

Erlang

  第一步: 下载安装Erlang,地址:传送门,安装除了自定义安装路径外,一路next即可
  第二步: 配置环境变量,新建一个环境变量命名为ERLANG_HOME,值为Erlang的安装路径
Springcloud Bus消息总线原理是实现详解
path环境中添加 %ERLANG_HOME%\\bin
Springcloud Bus消息总线原理是实现详解
  第三步: win + R 输入cmd回车,键入命令erl测试配置是否成功
Springcloud Bus消息总线原理是实现详解

RabbitMQ

  第一步: 这里以RabbitMQ 3.7.14为例,地址:传送门,页面的最下方有下载的地方,安装除了自定义安装路径外,一路next即可
Springcloud Bus消息总线原理是实现详解
  第二步: 配置环境变量,新建一个环境变量命名为RABBITMQ_SERVER,值为RabbitMQ的安装路径
Springcloud Bus消息总线原理是实现详解
path环境中添加 %RABBITMQ_SERVER%\\sbin
Springcloud Bus消息总线原理是实现详解
  第三步: 安装管理工具RabbitMQ-Plugins,win + R 输入cmd回车,键入命令

rabbitmq-plugins enable rabbitmq_management

Springcloud Bus消息总线原理是实现详解
  第四步: 第三部安装的管理工具会安装几个RabbitMQ的管理快捷方式,可以点击win键查看,点击即可执行对应操作
Springcloud Bus消息总线原理是实现详解
  第五步: 测试是否安装成功,浏览器http://localhost:15672(默认账号:guest,密码:guest),登入RabbitMQ的管理页就表示已经安装成功

Bus动态刷新

  Bus动态刷新有两种设计思想,第一种利用消息总线触发一个客户端的bus/refresh,从而刷新这条总线上的所有客户端配置;第二种利用消息总线触发一个服务端ConfigServer的bus/refresh,从而刷新这个配置中心(服务端)上注册的所有客户端配置。
  以上两种思想并不是都有应用,而是选择了第二种,因为第一种设计思想会使得被选中的服务端节点在配置获取职责之外新增配置刷新的职责,这会打破微服务的职责单一性和各节点之间的对等性。且一旦被选中的节点失效,配置刷新也将会随之失效,这条总线上的服务端依旧无法实时获取到最新的配置。

全局广播通知代码实现

  此时配置相关微服务一共有三个,它们是配置中心服务端3344、客户端3355、客户端3366,全局广播的代码实现需要对三个微服务都进行配置
  配置中心3344: pom文件和配置文件
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

spring:
    #rabbitmq相关配置
    rabbitmq:
      host: localhost
      port: 5672
      username: guest
      password: guest
##rabbitmq相关配置,暴露bus刷新配置的端点 SpringCloud Bus动态刷新全局广播
management:
  endpoints: #暴露bus刷新配置的端点
    web:
      exposure:
        include: 'bus-refresh'

  客户端3355、3366: pom文件和配置文件
<!--添加消息总线RabbitMQ支持-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

spring:
    #rabbitmq相关配置
    rabbitmq:
      host: localhost
      port: 5672
      username: guest
      password: guest

以3366为例,配置文件的缩进如下

server:
  port: 3366
spring:
  application:
    name: config-client
  cloud:
    config:
      uri: http://localhost:3344  #配置中心的地址
      label: master  #分支名称
      name: config  #配置文件名称
      profile: dev  #读取后缀名称   上述三个综合http://localhost:3344/master/config-dev.yml
  #rabbitmq相关配置
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest
#服务注册到eureka地址
eureka:
  client:
    service-url:
      #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://localhost:7001/eureka #单机版
# 暴露监控端点 否则 curl -X POST "http://localhost:3355/actuator/refresh" 不可使用
management:
  endpoints:
    web:
      exposure:
        include: "*"

  

资源下载此资源下载价格为1小猪币,终身VIP免费,请先
由于本站资源来源于互联网,以研究交流为目的,所有仅供大家参考、学习,不存在任何商业目的与商业用途,如资源存在BUG以及其他任何问题,请自行解决,本站不提供技术服务! 由于资源为虚拟可复制性,下载后不予退积分和退款,谢谢您的支持!如遇到失效或错误的下载链接请联系客服QQ:442469558

:本文采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可, 转载请附上原文出处链接。
1、本站提供的源码不保证资源的完整性以及安全性,不附带任何技术服务!
2、本站提供的模板、软件工具等其他资源,均不包含技术服务,请大家谅解!
3、本站提供的资源仅供下载者参考学习,请勿用于任何商业用途,请24小时内删除!
4、如需商用,请购买正版,由于未及时购买正版发生的侵权行为,与本站无关。
5、本站部分资源存放于百度网盘或其他网盘中,请提前注册好百度网盘账号,下载安装百度网盘客户端或其他网盘客户端进行下载;
6、本站部分资源文件是经压缩后的,请下载后安装解压软件,推荐使用WinRAR和7-Zip解压软件。
7、如果本站提供的资源侵犯到了您的权益,请邮件联系: 442469558@qq.com 进行处理!

猪小侠源码-最新源码下载平台 PHP教程 Springcloud Bus消息总线原理是实现详解 http://www.20zxx.cn/586083/xuexijiaocheng/qes.html

猪小侠源码,优质资源分享网

常见问题
  • 本站所有资源版权均属于原作者所有,均只能用于参考学习,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担
查看详情
  • 最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,建议提前注册好百度网盘账号,使用百度网盘客户端下载
查看详情

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务