第十章 Bus信息总线

发布时间:2023年12月29日

Bus信息总线

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

1. 概述

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

是什么?

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添加

<dependency>
 ? ?<groupId>org.springframework.cloud</groupId>
 ? ?<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
  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文件

<dependency>
 ? ?<groupId>org.springframework.cloud</groupId>
 ? ?<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
  1. applcation.yaml

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

测试:

修改之前:

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

访问:


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

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

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

测试:

通知总结All:

文章来源:https://blog.csdn.net/qq_53957101/article/details/135279551
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。