摘要:發(fā)送消息負(fù)載均衡發(fā)送消息通過輪詢隊列的方式發(fā)送,每個隊列接收平均的消息量。訂閱消息負(fù)載均衡假設(shè)有個隊列,個,那舉第一個消費個隊列,第二消費個隊列。
Producer生產(chǎn)者
ProducerGroup
用來表示一個發(fā)送消息應(yīng)用,一個 Producer Group 下包含多個 Producer 實例,可以是多臺機器,也可以是一臺機器的多個進(jìn)程,或者一個進(jìn)程的多個 Producer 對象。一個 Producer Group 可以發(fā)送多個 Topic 消息。
Producer Group 作用如下:
(1)標(biāo)識一類 Producer
(2)可以通過運維工具查詢返個収送消息應(yīng)用下有多個 Producer 實例
(3)發(fā)送分布式事務(wù)消息時,如果 Producer 中途意外宕機,Broker會主動回調(diào)Producer Group內(nèi)的任意一臺機器來確認(rèn)事務(wù)狀態(tài)。
Producer 連接 NameServer
Producer與NameServer集群中的其中一個節(jié)點(隨機選擇)建立長連接,定期從NameServer取到Topic路由信息(Broket注冊的IP地址),并向提供Topic服務(wù)的Master建立長連接,并且定時(默認(rèn)30秒)向Master 發(fā)送心跳。
Producer 發(fā)送消息負(fù)載均衡
發(fā)送消息通過輪詢隊列的方式發(fā)送,每個隊列接收平均的消息量。通過增加機器,可以水平擴展隊列容量。另外也可以自定義方式選擇發(fā)往哪個隊列。注:另外多個隊列可以部署在一臺機器上,也可以分別部署在多臺不同的機器上。
Consumer消費者
Consumer Group
用來表示一個消費消息應(yīng)用,一個Consumer Group下包含多個Consumer實例,可以是多臺機器,也可以是多個進(jìn)程,或者是一個進(jìn)程的多個Consumer對象。一個Consumer Group下的多個Consumer以均攤 方式消費消息,如果設(shè)置為廣播方式,那么這個Consumer Group下的每個實例都消費全量數(shù)據(jù)。
Consumer 連接 NameServer
Consumer與NameServer集群中的其中一個節(jié)點(隨機選擇)建立長連接,定期從NameServer取到Topic 路由信息,并向提供Topic服務(wù)的Master、Slave建立長連接,并定時向Master、Slave發(fā)送心跳。Consumer 既可以從 Master 訂閱消息,也可以從 Slave 訂閱消息,訂閱規(guī)則由 Broker 配置決定。
Consumer 訂閱消息負(fù)載均衡
假設(shè)有5個隊列,2 個Consumer,那舉第一個Consumer消費3個隊列,第二Consumer 消費2個隊列。這樣即可達(dá)到平均消費的目的,可以水平擴展Consumer來提高消費能力。但是Consumer 數(shù)量要小于等于隊列數(shù)量,如果Consumer超過隊列數(shù)量,那舉多余的Consumer將不能消費消息。
消費并行度
修改消費并行度方法:
(1)同一個Consumer Group下,通過增加Consumer實例數(shù)量來提高并行度,超過訂閱隊列數(shù)的Consumer實例無效。可以通過加機器,或者在已有機器啟動多個進(jìn)程的方式。
(2)提高單個 Consumer 的消費并行線程,通過修改設(shè)置 consumeThreadMin最小并發(fā)線程數(shù)和consumeThreadMax最大并發(fā)線程數(shù)來提高消費能力。
(3)通過設(shè)置Consumer的consumeMessageBatchMaxSize這個參數(shù),默認(rèn)是1,即一次只消費一條消息,例如設(shè)置為N,那么每次消費的消息數(shù)小于等于N。這樣即可大幅度提高消費的吞吐量。
Tag消息過濾
最后講解一些Tag,Tag是用于消息分類時使用的!但是只能做簡單的過濾。那么能不能消費端A訂閱這個Tag1就能確定Tag1消息發(fā)送到消費端A呢?答案是不能!根據(jù)前面的Consumer負(fù)載均衡策略,一個消息不能確定被發(fā)送到具體的某個消費者,所以只能做簡單的過濾數(shù)據(jù)分類。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/69707.html
摘要:利用的高級特性特性是一種負(fù)載均衡的機制。在一個消息被分發(fā)到之前,首先檢查消息屬性。屬性為某個值的消息單個消息或消息集合在描述,和的對應(yīng)關(guān)系,以及負(fù)載均衡策略時。同樣做到了保證消息的順序情況下,均衡消費的消費消息。 通常mq可以保證先到隊列的消息按照順序分發(fā)給消費者消費來保證順序,但是一個隊列有多個消費者消費的時候,那將失去這個保證,因為這些消息被多個線程并發(fā)的消費。但是有的時候消息按照...
摘要:主流消息中間件介紹是由出品,是一個完全支持和規(guī)范的實現(xiàn)。主流消息中間件介紹是阿里開源的消息中間件,目前也已經(jīng)孵化為頂級項目。 showImg(https://img-blog.csdnimg.cn/20190509221741422.gif);showImg(https://img-blog.csdnimg.cn/20190718204938932.png?x-oss-process=...
摘要:微信公眾號后端進(jìn)階,專注后端技術(shù)分享框架分布式中間件服務(wù)治理等等。 微信公眾號「后端進(jìn)階」,專注后端技術(shù)分享:Java、Golang、WEB框架、分布式中間件、服務(wù)治理等等。 前段時間有個朋友向我提了一個問題,他說在搭建 RocketMQ 集群過程中遇到了關(guān)于消費訂閱的問題,具體問題如下: showImg(https://segmentfault.com/img/remote/1460...
摘要:和之間的關(guān)系通過來綁定,來定義,即相同的,等于表示節(jié)點,非表示節(jié)點。所有的節(jié)點與集群的所有節(jié)點保持長連接,定時注冊信息到所有的。對磁盤的訪問串行化,避免磁盤竟?fàn)帲粫驗殛犃性黾訉?dǎo)致增高。要保證與完全的一致,增加了編程的復(fù)雜度。 Apache RocketMQ?是一個開源的分布式消息和流數(shù)據(jù)平臺。 1、既然是消息系統(tǒng),最核心的功能就是要提供消息的發(fā)布與訂閱功能,最簡單的概念模型如下: ...
閱讀 2832·2021-11-22 15:11
閱讀 3556·2021-09-28 09:43
閱讀 2903·2019-08-30 13:05
閱讀 3442·2019-08-30 11:18
閱讀 1457·2019-08-29 16:34
閱讀 1314·2019-08-29 13:53
閱讀 2920·2019-08-29 11:03
閱讀 1670·2019-08-29 10:57