无服务器学习03:消息总线SpringCloudBus

微服务之消息总线SpringCloudBus


一、什么是消息总线?

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

在总线上的各个实例,都可以方便地广播─些需要让其他连接在该总线的实例都知道的消息,其原理是ConfigClient实例都监听MQ中同一个Topic(默认是springCloudBus)。当一个服务刷新数据的时候,它会把这个信息放入到Topic中,这样其它监听同一Topic的服务就能得到通知。

Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,目前支持RabbitMQ和Kafka。RabbitMQ是一个实现了AMQP(Advanced Message Queuing Protocol)高级消息队列协议的消息队列服务,是一种消息中间件,常被当作服务总线来使用。Kafka是一种高吞吐量的分布式发布订阅消息系统,也是消息中间件的一种。

Spring Cloud Bus能管理和传播分布式系统间的消息,就像一个分布式执行器,可用于广播状态更改、事件推送等,也可以当作微服务间的通信通道。例如基于RabbitMQ实现配置中心配置信息自动更新的架构模式如下:

请添加图片描述
二、RabbitMQ使用

  • 1、RabbitMQ环境配置:

    • a.安装Erlang:因为RabbitMQ服务端代码是使用并发式语言Erlang编写的,所以需要Erlang环境,选择适合自己电脑的版本安装,下载地址http://erlang.org/download/,安装完成后配置系统环境变量(变量名ERLANG_HOME,变量值为安装路径)、配置path变量(新增环境变量%ERLANG_HOME%in)。配置完成后启动cmd输入erl如果能看到版本号即为安装成功。

    • b.安装RabbbitMQ:下载合适电脑的版本安装,下载地址https://www.rabbitmq.com/download.html,安装完成后安装RabbitMQ-Plugins插件(cmd命令切换到安装目录的sbin路径下,输入rabbitmq-plugins enable rabbitmq_management即可完成安装),最后打开cmd进入sbin目录输入rabbitmqctl status,如果出现一下显示,则表明安装成功。接下来双击rabbitmq-server.bat,访问http://localhost:15672即可进入web可视化管理页面(默认密码账号为guest)。

请添加图片描述

  • 2、消息广播的两种设计思想:

    • a.利用消息总线触发一个客户端/bus/refresh,而刷新所有客户端的配置(不推荐)。

    • b.利用消息总线触发一个服务端ConfigServer的/bus/refresh端点,而刷新所有客户端的配置(推荐)。

  • 3、微服务模块添加消息总线支持:配置中心和客户端都接入消息总线,选择第二种推荐的设计思想,实现广播通知,步骤如下

    • a.服务模块中引入SpringCloudBus工具包

< !–添加消息总线RabbitNQ支持–>
org.springframework.cloud</ groupid>
spring-cloud-starter-bus-amqp

  • b.修改配置yml配置文件,增加如下配置(配置中心需要暴露bus刷新配置的端点,客户端则不需要)

#rabbitmq相关配置 rabbitmq: host: localhost #RabbitMQ服务器地址 port: 5672 #RabbitMQ服务器端口 sername: guest #RabbitMQ服务账号
password: guest #RabbitMQ服务密码

#rabbitmq相关配置-暴露bus刷新配置的端点 management: endpoints:#暴露bus刷新配置的端点
web;
exposure:
include: "bus-refresh’

完成以上配置之后,启动所有微服务模块,post请求 http://localhost:3344/actuator/bus-refresh 配置中心端点,即可实现消息广播通知其他所有微服务,其他微服务进行配置文件更新。如果只想通知config-client:3355微服务,就不能使用前面那个全局广播方式,只需要post 请求 http://localhost:3344/actuator/bus-refresh/config-client:3355即可(微服务名称+端口号)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值