• SpringCloud——消息总线——Bus


    1.什么是总线?

            我们在微服务的项目中,通常会构建一个共同的消息主题,然后需要的服务可以连接上来,该主题中产生的消息会被监听和消费,这种我们称为消息总线。

            SpringCloud Bus 配合SpringCloud Config使用可以实现配置的动态刷新。

    2.两种实现方式

            Bus目前支持RabbitMQ和Kafka。

            第一种就是我们利用/bus/refresh先触发一个客户端获取最新配置,然后由此客户端发送消息给总线,从而传播去修改其他的客户端配置。

            第二种就是利用/bush/refresh去触发服务端(Config Server)配置的暴露bus刷新配置的端点('bus-refresh'),然后由服务端发送消息给总线,从而传播去刷新所有客户端的配置。  

    显然我们最好选择第二种,原因有以下两点:

    • 客户端服务模块本身是业务模块,不应该承担发送消息的职责。

    • 破坏了客户端各微服务的对等性。

    3.整体流程梳理

             初始架构就是服务端连接git,要从git上读配置,客户端服务连接服务端服务,要从服务端上读配置,然后服务端和客户端都要添加消息总线的支持,这是上图的(1)(2)。此时运维人员在git上修改了配置(3),并发送POST请求总线刷新给服务端(4):

            此时服务端就发送消息给消息总线(5),所有客户端就监听到了事件消息(6),然后去服务端读取最新的配置即可(7)。

            如果我们不想通知全部的客户端,只想定点通知某一个客户端,我们只需要修改Post请求即可,例如:

     

  • 相关阅读:
    Lodop使用总结
    【数学建模竞赛】优化类赛题常用算法解析
    Xubuntu22.04之绘制正弦波(一百七十八)
    UE4 材质实操记录
    C++ 一维数组初始化
    Mysql.索引数据结构演进
    Elasticsearch优化
    【JUC源码专题】LinkedBlockingDeque 源码分析(JDK8)
    批量图片转文字识别OCR身份证件信息提取软件
    Python脚本打包
  • 原文地址:https://blog.csdn.net/m0_62565675/article/details/134278995