Rocketmq - 2 集羣架構模型和部署結構圖

RocketMQ的Broker集羣搭建

Master和slaver類似Redis和MySql的主從,Slaver只有讀的權限,沒有寫的權限。

RocketMQ提供了多種的集羣搭建,具體如下:

1.單個 Master
這種方式風險較大,一旦 Broker 重啓或者宕機時,會導致整個服務不可用,不建議線上環境使用

2. 多 Master 模式
一個集羣無 Slave,全是 Master,例如 2 個 Master 或者 3 個 Master
優點:配置簡單,單個 Master 宕機或重啓維護對應用無影響,在磁盤配置爲 RAID10 時,即使機器宕機不可恢復情況下,由於 RAID10 磁盤非常可靠,消息也不會丟(異步刷盤丟失少量消息,同步刷盤一條不丟)。性能最高。
缺點:單臺機器宕機期間,這臺機器上未被消費的消息在機器恢復之前不可訂閱,消息實時性會受到影響。

類似關係圖如下:
這裏寫圖片描述
因爲MQ會進行本地IO刷盤的操作,所以一臺MQ如果是進行同步刷盤將不會丟失消息,異步刷盤可能丟失少量數據。
且因爲宕機的原因,在Master未啓動時,該MQ存儲的消息都無法被消費,實時性受到影響。

3. 多 Master 多 Slave 模式,異步複製
每個 Master 配置一個 Slave,有多對 Master-Slave,HA 採用異步複製方式,主備有短暫消息延遲,毫秒級。
優點:即使磁盤損壞,消息丟失的非常少,且消息實時性不會受影響,因爲 Master 宕機後,消費者仍然可以從 Slave 消費,此過程對應用透明。不需要人工干預。性能同多 Master 模式幾乎一樣。
缺點:Master 宕機,磁盤損壞情況,會丟失少量消息。

4. 多 Master 多 Slave 模式,同步雙寫
每個 Master 配置一個 Slave,有多對 Master-Slave,HA 採用同步雙寫方式,主備都寫成功,嚮應用返回成功。
優點:數據不服務都無單點,Master 宕機情況下,消息無延遲,服務可用性不數據可用性都非常高
缺點:性能比異步複製模式略低,大約低 10%左右,發送單個消息的 RT 會略高。目前主宕機後,備機不能自勱切換爲主機,後續會支持自動切換功能。(這是3.2.6的官方文檔的說明,現如今可能已經可以自動切換了,我還需要重新尋找資料進行確定)

這裏寫圖片描述

同步雙寫和異步複製的區別
區別在於返回ACK確認包(CONSUME_SUCCESS)的時機。同步雙寫是在MQ將消息寫入本地磁盤結束後,才返回給確認信息給生產者。異步複製是MQ兩者進行異步操作,一邊返回確認信息,一邊寫入磁盤。

RocketMQ物理部署結構

這裏寫圖片描述

RocketMQ 網絡部署特點
Name Server 是一個幾乎無狀態節點,可集羣部署,節點之間無任何信息同步。

Broker 部署相對複雜,Broker 分爲 Master 和 Slave,一個 Master 可以對應多個 Slave,但是一個 Slave 只能對應一個Master,Master與 Slave的對應關係通過指定相同的BrokerName,不同同的BrokerId來定義,BrokerId爲 0 表示 Master,非 0 表示 Slave。Master 也可以部署多個。每個 Broker 與Name Server 集羣中的所有節點建立長連接,定時註冊 Topic 信息到所有 Name Server。

Producer 與 Name Server 集羣中的其中一個節點(隨機選擇)建立長連接,定期從 Name Server 獲取 Topic 路由信息,並向提供 Topic 服務的 Master 建立長連接,且定時向 Master 發送心跳。Producer 完全無狀態,可集羣部署。

Consumer 與 Name Server 集羣中的其中一個節點(隨機選擇)建立長連接,定期從 Name Server 取 Topic 路由信息,並向提供 Topic 服務的 Master、Slave 建立長連接,且定時向 Master、Slave 發送心跳。Consumer既可以從 Master 訂閱消息,也可以從 Slave 訂閱消息,訂閱規則由 Broker 配置決定。

可以從上面的出以下關鍵點:
1,Name Server是一個關於Topic的網絡路由管理器,它存放和管理所有的Topic。所有的Broker都要定時註冊Topic信息到路由中。

2.所有的Producer和Consumer都不是直接與MQ(Broker)進行交互的。它需要先根據自己的Topic到Name Server中獲取該Topic對應哪臺Broker。拿到路由信息,再進行交互。

3.Name Server之間不進行數據通信,與Zookeeper不同之處體現出來了

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