簡介:
RocketMQ是阿里巴巴出品的一款低延遲,可靠,可擴展,易於使用的面向消息的中間件,支撐着阿里巴巴集團龐大的消息業務增長。RocketMQ是基於MetaQ的一個開源分支,幾乎重寫了MetaQ所有的核心組件,可以說是MetaQ的下一代產品。同時也是阿里雲的ONS雲消息服務的核心組件,每天可處理上千億條消息,服務於阿里內部上千個應用,順利通過淘寶,天貓‘雙11’等大促考驗。
提供的多種功能:
支持Pub/Sub和P2P消息模型
在同一個隊列中具有可靠的FIFO和嚴格的通信順序
長pull queue模型,也支持push消費方式
在單個隊列中具備堆積上億條消息的能力
覆蓋多種消息協議,如JMS,MQTT,HTTP2等
每個消息至少投遞一次的Message delivery semantics來保證分布式部署架構高可用
支持Docker鏡像來進行隔離測試和雲隔離集群
提供用於配置,測量和監控的功能豐富的管理界面
消息全鏈路追蹤
生產者事務消息機制,使得生產者和本地數據庫事務能在一個原子操作里面進行處理
消息調度交付,類似JMS2規范的延遲支付
1,物理部署結構:

網絡部署的特點:
- Name Server(名稱服務)是一個幾乎無狀態節點,可集群部署,節點之間無任何信息同步
- Broker部署相對復雜,Broker分為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配置決定。
2,邏輯部署結構:

Producer Group:用來表示一個發送消息的應用。一個Producer Group下包含多個Producer實例,可以是多台機器,也可以是一台機器的多個進程,或者一個進程中多個Producer對象。一個Producer Group可以發送多個Topic消息,Producer Group的作用如下:
- 標識一類Producer
- 可以通過運維工具查詢這個發送消息的應用下有多個Producer實例
- 發送分布式事務消息時,如果Producer中途意外宕機,Broker會主動回調Producer Group內的任意一台機器來確認事務狀態
內容取自:<<分布式系統常用技術及案例分析>>
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">