rocketMQ基本架構簡介


1、RocketMQ 簡介:

    RocketMQ前身是阿里研發的一個隊列模型的消息中間件,后開源給apache基金會成為了apache的頂級開源項目,具有高性能、高可靠、高實時、分布式特點。

2、RocketMQ基本架構:

 
 
 

  如圖所示RocketMQ架構上主要分為四部分:

  Producer:

       充當消息發布的角色,支持分布式集群方式部署。producer通過MQ的負載均衡模塊選擇相應的Broker集群隊列進行消息投遞。投遞的過程支持快速失敗並且低延遲。

  Consumer:

      充當消息消費者的角色,支持分布式集群方式部署。支持以push推,pull拉兩種模式對消息進行消費。同時也支持集群方式和廣播形式的消費,它提供實時消息訂閱機制,可以滿足大多數用戶的需求。

  NameServer:

      NameServer是一個功能齊全的服務器,其角色類似dubbo中的zookeeper,支持Broker的動態注冊與發現。主要包括兩個功能:

  1.  Broker管理。NameServer接受Broker集群的注冊信息並且保存下來作為路由信息的基本數據。然后提供心跳檢測機制,檢查Broker是否還存活。
  2.  路由信息管理。每個NameServer將保存關於Broker集群的整個路由信息和用於客戶端查詢的隊列信息。然后Producer和Conumser通過NameServer就可以知道整個Broker集群的路由信息,從而進行消息的投遞和消費。

       NameServer通常也是集群的方式部署,各實例間相互不進行信息通訊。Broker是向每一台NameServer注冊自己的路由信息,所以每一個NameServer實例上面都保存一份完整的路由信息。當某個NameServer因某種原因下線了,Broker仍然可以向其它NameServer同步其路由信息,Produce,Consumer仍然可以動態感知Broker的路由的信息。

  配置NameServer:

      代碼方式:producer.setNamesrvAddr("ip:port"); consumer.setNamesrvAddr("ip:port");多個實例的NameServer以";'分割。

      java 配置:rocketmq.namesrv.addr

      操作系統環境變量: NAMESRV_ADDR

      HTTP Endpoint.

 

  Broker Server:

     broker主要負責消息的存儲、投遞和查詢以及服務高可用保證。為了實現這些功能broker包含了以下幾個重要子模塊。

     Remoting Module:整個broker的實體,負責處理來自clients端的請求。

     Client Manager:負責管理客戶端(Producer/Consumer)和維護Consumer的topic訂閱信息

     Store Service:提供方便簡單的API接口處理消息存儲到物理硬盤和查詢功能。

     HA Service:高可用服務,提供master broker 和 slave broker之間的數據同步功能。

     Index Service:根據特定的Message key對投遞到broker的消息進行索引服務,以提供消息的快速查詢。

 
 

 

以上的內容只是對roketMQ進行一些基本的入門簡介,后面會有相關的文章對具體的內容進行更深入的討論,也歡迎大家提出寶貴的意見和發表自己的見解。


免責聲明!

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



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