關(guān)于SpringCloud的Bus消息總線圖文詳解
分布式自動(dòng)刷新配置功能
Spring Cloud Bus 配合 Spring Cloud Config 使用可以實(shí)現(xiàn)配置的動(dòng)態(tài)刷新。

Spring Cloud Bus是用來將分布式系統(tǒng)的節(jié)點(diǎn)與輕量級消息系統(tǒng)鏈接起來的框架,它整合了Java的事件處理機(jī)制和消息中間件的功能。
Spring Clud Bus目前支持RabbitMQ和Kafka。
Spring Cloud Bus能管理和傳播分布式系統(tǒng)間的消息,就像一個(gè)分布式執(zhí)行器,可用于廣播狀態(tài)更改、事件推送等,也可以當(dāng)作微服務(wù)間的通信通道。

什么是總線
在微服務(wù)架構(gòu)的系統(tǒng)中,通常會使用輕量級的消息代理來構(gòu)建一個(gè)共用的消息主題,并讓系統(tǒng)中所有微服務(wù)實(shí)例都連接上來。由于該主題中產(chǎn)生的消息會被所有實(shí)例監(jiān)聽和消費(fèi),所以稱它為消息總線。在總線上的各個(gè)實(shí)例,都可以方便地廣播一些需要讓其他連接在該主題上的實(shí)例都知道的消息。
基本原理
ConfigClient實(shí)例都監(jiān)聽MQ中同一個(gè)topic(默認(rèn)是springCloudBus)。當(dāng)一個(gè)服務(wù)刷新數(shù)據(jù)的時(shí)候,它會把這個(gè)信息放入到Topic中,這樣其它監(jiān)聽同一Topic的服務(wù)就能得到通知,然后去更新自身的配置。
架構(gòu)設(shè)計(jì)思想:
- 1)利用消息總線觸發(fā)一個(gè)客戶端/bus/refresh,而刷新所有客戶端的配置

- 2)利用消息總線觸發(fā)一個(gè)服務(wù)端ConfigServer的/bus/refresh端點(diǎn),而刷新所有客戶端的配置

圖二的架構(gòu)顯然更加適合,圖一不適合的原因如下:
1.打破了微服務(wù)的職責(zé)單一性,因?yàn)槲⒎?wù)本身是業(yè)務(wù)模塊,它本不應(yīng)該承擔(dān)配置刷新的職責(zé)。
2.破壞了微服務(wù)各節(jié)點(diǎn)的對等性。
3.有一定的局限性。例如,微服務(wù)在遷移時(shí),它的網(wǎng)絡(luò)地址常常會發(fā)生變化,此時(shí)如果想要做到自動(dòng)刷新,那就會增加更多的修改
到此這篇關(guān)于關(guān)于SpringCloud的Bus消息總線圖文詳解的文章就介紹到這了,更多相關(guān)SpringCloud的Bus消息總線內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Maven的生命周期與自定義插件實(shí)現(xiàn)方法
Maven的生命周期就是對所有的構(gòu)建過程進(jìn)行抽象和統(tǒng)一。包含了項(xiàng)目的清理、初始化、編譯、測試、打包、集成測試、驗(yàn)證、部署和站點(diǎn)生成等幾乎所有的構(gòu)建步驟2022-12-12
Java實(shí)現(xiàn)簡單局域網(wǎng)聊天室
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
Java?C++算法題解leetcode801使序列遞增的最小交換次數(shù)
這篇文章主要為大家介紹了Java?C++題解leetcode801使序列遞增的最小交換次數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
關(guān)于MyBatis 查詢數(shù)據(jù)時(shí)屬性中多對一的問題(多條數(shù)據(jù)對應(yīng)一條數(shù)據(jù))
這篇文章主要介紹了MyBatis 查詢數(shù)據(jù)時(shí)屬性中多對一的問題(多條數(shù)據(jù)對應(yīng)一條數(shù)據(jù)),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Java中出現(xiàn)InterruptedException異常的原因及解決方案
在Java多線程編程中,InterruptedException是一個(gè)常見但又容易被忽視的異常,它通常出現(xiàn)在線程被外部中斷時(shí),例如調(diào)用Thread.interrupt() 或線程池關(guān)閉時(shí),本文將通過一個(gè)實(shí)際的日志案例,分析InterruptedException 的產(chǎn)生原因、影響,需要的朋友可以參考下2025-06-06
SpringBoot調(diào)用對方webService接口的幾種方法示例
平常我們開發(fā)調(diào)用接口一般會用到幾種數(shù)據(jù)格式,比如有restful的,這個(gè)是目前最流行的,也是最簡單開發(fā)的,還有一種就是webservice數(shù)據(jù)格式,本文給大家介紹了幾種SpringBoot調(diào)用對方webService接口的方法,文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2023-11-11

