SpringCloud——消息总线Bus

SpringCloud——消息总线Bus

消息总线

  • 在微服务架构中,通常会使用轻量级的消息代理来构建一个共用的消息主题来连接各个微服务实例,它广播的消息会被所有在注册中心的微服务实例监听和消费,也称消息总线
  • SpringCloud中也有对应的解决方案,SpringCloud Bus 将分布式的节点用轻量的消息代理连接起来,可以很容易搭建消息总线,配合SpringCloud config 实现微服务应用配置信息的动态更新。

动态刷新config

两种设计思想
  • 利用消息总线触发一个客户端bus/refresh,而刷新所有客户端的配置
    在这里插入图片描述

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

  • 在这里插入图片描述

第二种的架构显然更加适合,第一种不适合的原因有

  1. 打破了微服务的职责单一性,因为微服务本身是业务模块,他本不应该承担配置刷新的职责。
  2. 破坏了微服务各个节点的对等性。
  3. 有一定的局限性,微服务在迁移时,它的网络常常会发生变化,此时如果想要做到自动刷新,那就回增加更多的配置。
实例
  1. 再建立一个model(上一篇已经建立了一个客户端和配置中心)
    在这里插入图片描述

  2. 改pom
    在这里插入图片描述

  3. 改yml

    server:
      port: 3366
    
    spring:
      application:
        name: config-client
      cloud:
        # config客户端配置
        config:
          # 分支名称
          label: master
          # 配置文件名称
          name: config
          # 读取后缀名称
          profile: dev
          # 配置中心地址
          uri: http://localhost:3344
    
        #rabbitmq相关配置 15672是Web管理界面的端口;5672是MQ访问的端口
      rabbitmq:
        host: xxxxxxx
        port: 5672
        username: guest
        password: guest
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:7001/eureka/
    # 暴露监控端点
    management:
      endpoints:
        web:
          exposure:
            include: "*"
    

修改配置中心的yml,添加如下配置

  #rabbitmq相关配置 15672是Web管理界面的端口;5672是MQ访问的端口
  rabbitmq:
    host: xxxxxxxx
    port: 5672
    username: guest
    password: guest

#服务注册到eureka地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka

##rabbitmq相关配置,暴露bus刷新配置的端点<--------------------------
management:
  endpoints: #暴露bus刷新配置的端点
    web:
      exposure:
        include: 'bus-refresh'

另一个客户端配置与3366相同

启动测试

  • 修改gitee的文件后进行刷新

  • curl -X POST "http://localhost:3344/actuator/bus-refresh

  • 发现所以配置都进行动态刷新了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值