码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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请求即可,例如:

     

  • 相关阅读:
    三面头条,靠 P9 级算法大牛分享的两本算法 pdf 书籍,轻松拿到 offer
    备战2022.9.15数学建模
    dayjs 获取一周日期 MM.DD 判断今天日期以文字格式显示(场景积分积分签到)
    全球商务办公解决方案巨头:CRM强助攻, 覆盖1000+伙伴的售后服务网络
    论文阅读_胶囊网络CapsNet
    前端获取图片宽高的几种方法
    市场上低代码产品纷繁复杂,企业该如何选择?
    python面向对象之类和对象相关知识
    5. 虚拟化特性介绍
    【专栏】RPC系列(实战)-优雅的序列化
  • 原文地址:https://blog.csdn.net/m0_62565675/article/details/134278995
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号