RocketMQ負載均衡特性

Producer生產者併發

  1. ProducerGroup
    用來表示一個發送消息應用,一個 Producer Group 下包含多個 Producer 實例,能夠是多臺機器,也能夠是一臺機器的多個進程,或者一個進程的多個 Producer 對象。一個 Producer Group 能夠發送多個 Topic 消息。

    Producer Group 做用以下:負載均衡

    (1)標識一類 Producer運維

    (2)能夠經過運維工具查詢返個収送消息應用下有多個 Producer 實例分佈式

    (3)發送分佈式事務消息時,若是 Producer 中途意外宕機,Broker會主動回調Producer Group內的任意一臺機器來確認事務狀態。工具

  2. Producer 鏈接 NameServer

    Producer與NameServer集羣中的其中一個節點(隨機選擇)創建長鏈接,按期從NameServer取到Topic路由信息(Broket註冊的IP地址),並向提供Topic服務的Master創建長鏈接,而且定時(默認30秒)向Master 發送心跳。spa

  3. Producer 發送消息負載均衡

    發送消息經過輪詢隊列的方式發送,每一個隊列接收平均的消息量。經過增長機器,能夠水平擴展隊列容量。另外也能夠自定義方式選擇發往哪一個隊列。注:另外多個隊列能夠部署在一臺機器上,也能夠分別部署在多臺不一樣的機器上。線程

圖片描述

Consumer消費者對象

  1. Consumer Group

    用來表示一個消費消息應用,一個Consumer Group下包含多個Consumer實例,能夠是多臺機器,也能夠是多個進程,或者是一個進程的多個Consumer對象。一個Consumer Group下的多個Consumer以均攤 方式消費消息,若是設置爲廣播方式,那麼這個Consumer Group下的每一個實例都消費全量數據。隊列

  2. Consumer 鏈接 NameServer

    Consumer與NameServer集羣中的其中一個節點(隨機選擇)創建長鏈接,按期從NameServer取到Topic 路由信息,並向提供Topic服務的Master、Slave創建長鏈接,並定時向Master、Slave發送心跳。Consumer 既能夠從 Master 訂閱消息,也能夠從 Slave 訂閱消息,訂閱規則由 Broker 配置決定。進程

  3. Consumer 訂閱消息負載均衡

    假設有5個隊列,2 個Consumer,那舉第一個Consumer消費3個隊列,第二Consumer 消費2個隊列。這樣便可達到平均消費的目的,能夠水平擴展Consumer來提升消費能力。可是Consumer 數量要小於等於隊列數量,若是Consumer超過隊列數量,那舉多餘的Consumer將不能消費消息。

圖片描述

  1. 消費並行度

    修改消費並行度方法:

    (1)同一個Consumer Group下,經過增長Consumer實例數量來提升並行度,超過訂閱隊列數的Consumer實例無效。能夠經過加機器,或者在已有機器啓動多個進程的方式。

    (2)提升單個 Consumer 的消費並行線程,經過修改設置 consumeThreadMin最小併發線程數和consumeThreadMax最大併發線程數來提升消費能力。

    (3)經過設置Consumer的consumeMessageBatchMaxSize這個參數,默認是1,即一次只消費一條消息,例如設置爲N,那麼每次消費的消息數小於等於N。這樣便可大幅度提升消費的吞吐量。

Tag消息過濾最後講解一些Tag,Tag是用於消息分類時使用的!可是隻能作簡單的過濾。那麼能不能消費端A訂閱這個Tag1就能肯定Tag1消息發送到消費端A呢?答案是不能!根據前面的Consumer負載均衡策略,一個消息不能肯定被髮送到具體的某個消費者,因此只能作簡單的過濾數據分類。

相關文章
相關標籤/搜索