第十章 Bus信息总线

Bus信息总线

gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。

1. 概述

Springcloud Config使用可以实现配置的动态刷新,防止忘记手动刷新。

是什么?

第十章 Bus信息总线_第1张图片

Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架, 它整合了Java的事件处理机制和消息中间件的功能。Bus支持两种代理:RabbitMQ和Kafka。上图是直接推送给一个服务,也可以直接推送给server config这个服务,来实现消息的推送。

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

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

2. RabbitMQ环境配置

Windows安装rabbitMq

1.安装Erlang,下载地址:http://erlang.org/download/opt_win64_21.3.exe
2.安装RabbitMQ,下载地址:https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/rabbitmq-server-3.7.14
3.进入sbin目录,输入管理和启动功能rabbitmq-plugins enable rabbitmq management
4.访问地址查看是否安装成功:http://localhost:15672/,默认的账号和密码是guest

Linux安装rabbitMq

3. Springcloud Bus动态刷新全局广播

创建cloud-config-client3366,演示广播效果

  1. pom文件跟cloud-config-client3355一样

  2. application.yaml也跟cloud-config-client3355一样

  3. controller和主启动基本一样

设计思想

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

2.利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置技术上选择config server进行广播实现,减少业务服务端的繁琐性。

给cloud-config-center-3344配置中心服务端添加消息总线支持

  1. pom添加


    org.springframework.cloud
    spring-cloud-starter-bus-amqp
  1. application.yaml

server:
  port: 3344
​
spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
          password: 12345678
          username: root
          uri: http://192.168.25.153:1000/root/cloud_config.git
          search-paths:
            - cloud_config
#          private-key:
#            -----BEGIN RSA PRIVATE KEY-----
#            
#            -----END RSA PRIVATE KEY-----
      label: main   #分支
​
#rabbitmq配置
rabbitmq:
  host: 192.168.25.153
  port: 5672
  username: admin
  password: aaaaaa
​
eureka:
  client:
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
​
#rabbitmq相关配置,暴露bus网新配置的端点
management:
  endpoints:
    web:
      exposure:
        include: 'bus-refresh'

给cloud-config-client-3355|3366客户端添加消息总线支持

  1. pom文件


    org.springframework.cloud
    spring-cloud-starter-bus-amqp
  1. applcation.yaml

第十章 Bus信息总线_第2张图片

15672端口,连接时使用5672这个。

测试:

修改之前:

第十章 Bus信息总线_第3张图片

修改之后:(修改并发送Post请求)

第十章 Bus信息总线_第4张图片

访问:

第十章 Bus信息总线_第5张图片
第十章 Bus信息总线_第6张图片

4. SpringCloud Bus动态刷新定点通知

固定服务通知,案例设置只通知3355,不通知3366。

具体实施例子: 公式: http://localhost:3344/actuator/bus-refresh/{destination},/bus/refresh请求不再发送到具体的服务实例上,而是发给config server通过destination参数类指定需要更新配置的服务或实例。
第十章 Bus信息总线_第7张图片

测试:

第十章 Bus信息总线_第8张图片

通知总结All:
第十章 Bus信息总线_第9张图片

你可能感兴趣的:(分布式,spring,cloud)