簡單理解RocketMQ---入門


簡介:

        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內的任意一台機器來確認事務狀態
    Consumer Group:用來表示一個消費消息的應用。一個 Consumer Group下包含多個 Consumer實例,可以是多台機器,也可以是多個進程,或者是一個進程的多個Consumer對象。一個Group下的多個Consumer以均攤方式消費消息,如果設置為廣播方式,那么這個Consumer Group下的每個實例都消費全量數據。需要注意的是,同一個Consumer Group中的Consumer實例必須有相同的topic subscription。可以說,Consumer Group的概念,變相的實現了消息領域點對點和廣播通信模式。
 
內容取自:<<分布式系統常用技術及案例分析>>

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM