一、概述
1、是什么
Bus反对两种音讯代理RabbitMQ和Kafka,Bus配合Config应用实现配置的动静刷新。
用来将分布式系统的节点与轻量级音讯零碎链接起来的框架,整合了Java的事件处理机制和消息中间件性能。
2、能干嘛
Bus能治理和流传分布式系统间的音讯,就像一个分布式执行器,能够用于播送状态更改,事件推送等,也能够当做微服务间的通信通道。
3、总线是什么及基本原理
是什么:在微服务架构的零碎中,通常会应用轻量级的音讯代理来构建一个共用的音讯主题,并让零碎中所有微服务实例都连贯上来,因为该主题中产生的音讯会被所有实例监听和生产,所以称之为音讯总线。
基本原理:ConfigClient实例都监听MQ中同一个topic(默认就是Bus)当一个服务刷新数据,就会把这个音讯放入到topic中,这样其它监听同一个topic的服务就能失去告诉,而后更新本身配置。
二、Bus动静刷新全局播送
- 必须先具备良好的MQ环境
- 演示播送成果,减少复杂度。增加配置核心客户端B
- 设计思路
1)利用音讯总线触发一个客户端/bus/refresh,而刷新所有客户端的配置。
2)利用音讯总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端配置。
3)抉择第二种形式,起因:突破了微服务的职责单一性,微服务自身是业务模块,不应该承当配置刷新职责;毁坏了微服务各节点的对等性;有肯定局限性。 - 配置核心服务端增加音讯总线反对
1.pom增加bus-amqp的包依赖2.yml1)增加rabbitmq相干配置rabbitmq.host=地址rabbitmq.port=端口rabbitmq.username=用户名rabbitmq.password=明码2)裸露bus刷新配置的端点management.endpoints.web.exposure.include='bus-refresh'
- 配置核心客户端A增加音讯总线反对
1.pom增加bus-amqp的包依赖2.yml1)增加rabbitmq相干配置rabbitmq.host=地址rabbitmq.port=端口rabbitmq.username=用户名rabbitmq.password=明码2)裸露bus刷新配置的端点management.endpoints.web.exposure.include='*'
- 配置核心客户端B增加音讯总线反对(同客户端A)
批改github上配置文件,发送post申请,发现客户端都曾经刷新,一次批改播送告诉,处处失效。POST申请:curl -x POST "服务器地址/actuator/bus-refresh"
三、Bus动静刷新定点告诉
不想全副告诉,只想定点告诉。
指定具体某一个实例失效而不是全副;公式:http://localhost:3344/actuator/bus-refresh/{destination};/bus/refresh申请不再发送到具体的服务实例上,而是发给config server,通过destination参数指定须要更新配置的服务或实例(服务名+端口号)。