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