rocketmq總體理解

 rocketmq的文章在網絡上有大量的文章分析,而且分析的非常不錯。本人此處發表rocket文章只是學習過程中的心得體會,可能分析不是很準確,希望有緣人指出其中問題,日後改正!

rocketmq總體架構

這裏寫圖片描述

從上圖中可以看出,rocketmq主要分爲四大部分,分別爲nameserver,broker,produer,consumer。其中每一個部分都可以集羣部署。

  • nameServer集羣:獨立部署,互相不受影響,主要是保存了broker註冊的相關信息,與其他三個集羣之間採用長連接通訊。其中一臺宕機,不影響其他的機器。
  • broker集羣:rocketmq中消息的存儲與轉發服務器,主要有多個master-slave模式,雙master部署模式,單個master模式。消息在每一個master中都是同樣的存儲,集羣內部master與slave之間的有同步,異步通訊方式。
  • producer集羣:產生消息的集羣,可以是單個應用也可以是集羣。通過長連接向nameServer集羣獲取topic列表,向broker集羣進行發送消息。producer與master建立長連接。
  • consumer集羣:消費消息的集羣,可以是單個應用也可以集羣。消費消息方式主要有廣播和集羣兩種模式。consumer通過長連接向nameserver集羣獲取topic列表,然後從broker集羣中消費消息。consumer與broker集羣中的master和slave都建立長連接,這個與producer不同。

rocketmq邏輯架構

這裏寫圖片描述
rocketmq邏輯圖中顯示,生產者producer與消費者consumer通過broker集羣來進行消息的轉發與存儲。其中topicA,B,C,D在rocketmq中是消息的分類。

  • Topic:一個topic代表一類消息,通常指一個應用的消息對應一個Topic。生產者可以自己發送消息時告訴broker創建集羣(開發環境可以),也可以通過命令在broker集羣中創建好(生產環境推薦)。broker將topic信息註冊到nameserver集羣中。
  • tags:消息標籤,在同一個topic中,可以通過tags進行消息分類或過濾。

NameServer集羣

  1. nameServer集羣沒有名稱,可以橫向擴展,集羣內部各個機器沒有任何通訊
  2. broker集羣中的每個節點啓動時,都會通過長連接向nameServer集羣中註冊信息(主要是topic路由信息)
  3. producer發送消息時,通過長連接向nameServer獲取topic路由信息,從而實現與broker中master通訊。
  4. consumer消費消息時,通過長連接向nameServer獲取topic路由信息,達到consumer與master,slave通訊。
    5.nameServer中保存的路由信息都保存在內存中,宕機之後,消息丟失。rocketmq主要是通過RouteInfoManager類管理。
    這裏寫圖片描述
    圖中就是通過mqadmin命令查看的topicTestA路由信息

broker集羣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章