rocketMQ基本架構簡介

一、RocketMQ 簡介:java

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

二、RocketMQ基本架構:服務器

 
 
 

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

  Producer:負載均衡

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

  Consumer:性能

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

  NameServer:orm

      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進行一些基本的入門簡介,後面會有相關的文章對具體的內容進行更深刻的討論,也歡迎你們提出寶貴的意見和發表本身的看法。

相關文章
相關標籤/搜索