rocketMq之叢集搭建(三)

冥極醉醉冥極發表於2020-12-07

角色介紹

Producer:訊息傳送者,如發信者

Consumer:訊息接收者,如收信者

Broker:暫存和傳輸訊息,如郵局

Name Server:管理broker,如郵局的管理機構,對比eureka註冊中心,他註冊的topic及broker的對應關係

Topic:訊息分類,Producer可以傳送訊息到1個或多個topic,Consumer也可以訂閱1個或多個topic

Message Queue:類似topic的分割槽,即子類目。使用者並行收發訊息



Broker主從

Master節點:主要處理寫操作,用於接收Producer的資訊,把訊息儲存到自己的節點當中

Slave節點:只能處理讀操作,用於Consumer消費資訊,注意Consumer也能從Master中消費資訊,這也是Consumer與Broker Master建立長連線的原因

Master節點會通過長連線把訊息同步到Slave中,方式可以採用非同步或同步

叢集特點

Name Server是無狀態的,可叢集部署,節點之間無訊息同步

Broker分Master和Slave,同一組Master和Slave的BrokerName相同。而Master和Slave通過BrokerId進行區分,0表示主節點,非0表示從節點。Master可以有多個Slave,而Slave只能有一個Master,而一組的多個Slave的BrokerId必須不同。每一個Broker都會通過長連線來向所有的Name Server定時註冊topic路由資訊

Producer向Name Server叢集的其中一個節點(隨機選擇),定期從Name Server獲取路由資訊,並向提供Topic服務的Master建立長連線(因為Slave只能讀,不能寫),並定時向master傳送心跳,Producer無狀態,可叢集部署

Consumer向Name Server叢集的其中一個節點(隨機選擇),定期從Name Server獲取路由資訊,並向提供Topic服務的Master、Consumer建立長連線(因為Master和Slave都能讀),並定時向Master、Slave傳送心跳,Consumer既可以向Master訂閱訊息,頁可以向Slave訂閱訊息,訂閱規則由Broker配置決定

叢集模式

單Master模式:一旦Broker重啟或當機,導致整個服務不可用,可用於本地測試

多Master模式:無Slave,優點:單個Master重啟或當機對應用無影響,缺點:單臺機器當機期間,訊息在機器恢復前不能訂閱,影響實時性

多Master多Slave非同步模式:每一個Master對應一個Slave,有多對Master-Slave,HA採取非同步複製方式(即Producer向Broker Master寫完訊息後,Broker先保持資料,再傳送回復給Producer,最後向Slave同步訊息),優點:磁碟損壞,訊息丟失非常小,且實時性不受影響,當機可以從Slave消費,此過程對應用透明

多Master多Slave同步模式:每一個Master對應一個Slave,有多對Master-Slave,HA採取同步雙寫方式(即Producer向Broker Master寫完訊息後,Broker先儲存資料,然後向Slave同步訊息,同步完後再傳送回復給Producer)。優點:資料與服務都無單點故障,缺點:效能比非同步模式大約低10%左右,單訊息RT會略高

相關文章