您好,登錄后才能下訂單哦!
小編給大家分享一下如何實(shí)現(xiàn)Rocketmq集群消費(fèi)測(cè)試,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
一 機(jī)器部署
1、機(jī)器組成
7臺(tái)機(jī)器,均為16G內(nèi)存
每臺(tái)服務(wù)器均有4個(gè)CPU,2核
2、運(yùn)行環(huán)境配置
3、刷盤(pán)方式
每臺(tái)機(jī)器master機(jī)器均采用異步刷盤(pán)方式
二 性能評(píng)測(cè)
1、評(píng)測(cè)目的
測(cè)試consumer端的集群模式消費(fèi)。
2、評(píng)測(cè)指標(biāo)
(1)topic關(guān)聯(lián)的readQueueNums讀隊(duì)列數(shù)值
(2)屬于同一個(gè)consumerGroup的consumer個(gè)數(shù)
(3)所有consumer消費(fèi)消息的總條數(shù)
(4)每個(gè)consumer消費(fèi)消息,讀取的隊(duì)列Id
(5)部署集群中的master機(jī)器臺(tái)數(shù)
3、評(píng)測(cè)邏輯
如果有 5 個(gè)隊(duì)列,2 個(gè) consumer,那么第一個(gè) Consumer 消費(fèi) 3 個(gè)隊(duì)列,第二 consumer 消費(fèi) 2 個(gè)隊(duì)列。
如果Consumer 超過(guò)隊(duì)列數(shù)量,那么多余的Consumer 將不能消費(fèi)消息。
隊(duì)列數(shù)量、Consumer數(shù)量、Replance結(jié)果如下表
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 |
5 | 2 | C1:3 C2:2 |
6 | 3 | C1:3 C2:3 |
10 | 20 | C1-C10:1 C11-C20:0 |
20 | 6 | C1:4 C2:4 C3-C4:3 |
4、評(píng)測(cè)過(guò)程
(1)發(fā)送消息前,查看服務(wù)端的topic關(guān)聯(lián)的隊(duì)列個(gè)數(shù)。
(2)producer端向topic名稱為“clusterTopicTest”隊(duì)列發(fā)送消息,定為20條,發(fā)送消息后并記錄每條消息的msgId、queueId、offset等基本信息。
(3)配置consumer端,日志記錄每個(gè)consumer端的instanceName、消息的offset、所消費(fèi)隊(duì)列queueId、消息的body、消息msgId,以及每個(gè)consumer消費(fèi)消息的總條數(shù)。
(4)每次消費(fèi)完之后,統(tǒng)計(jì)所有consumer端消費(fèi)消息的總數(shù),判斷消息是否有丟失。
(5)每次消費(fèi)完之后,分析每個(gè)consumer消費(fèi)隊(duì)列的queueId,判斷隊(duì)列是否達(dá)到了負(fù)載均衡。
(6)記topic的隊(duì)列數(shù)為A,記consumer個(gè)數(shù)為B,做如下調(diào)整:
第一組:保持A不變,增加B,使得A > B,然后重復(fù)步驟1-5。
第二組:保持A不變,增加B,使得A = B,然后重復(fù)步驟1-5。
第三組:保持A不變,增加B,使得A = 2 * B,然后重復(fù)步驟1-5。
第三組:增加A,保持B不變,使得2 * A = B,然后重復(fù)步驟1-5。
第五組:減少A,保持B不變,使得2 * A < B,然后重復(fù)步驟1-5。
(7)注意:需要先啟動(dòng)所有consumer端,在啟動(dòng)producer端發(fā)送消息,這樣才能在每個(gè)consumer端同時(shí)看到消息的消費(fèi)情況,因?yàn)橄⒈幌M(fèi)的速率是很快的。
(8)注意:master機(jī)器個(gè)數(shù),每臺(tái)master機(jī)器上指定topic的隊(duì)列數(shù),兩數(shù)值相乘,才是最終的rocketmq做負(fù)載均衡的隊(duì)列個(gè)數(shù)。 (步驟6的master機(jī)器個(gè)數(shù)為2)
第一組,總發(fā)送條數(shù)20條
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 (期望) | Reblance結(jié)果 (實(shí)際) | Master機(jī)器 | 消費(fèi)條數(shù) | |
Master1 | Master2 | |||||
8 | 5 | C1:4 | C1:4 | 4 | 0 | 8 |
C2:3 | C2:3 | 1 | 2 | 3 | ||
C3:3 | C3:3 | 0 | 3 | 3 | ||
C4:3 | C4:3 | 3 | 0 | 3 | ||
C5:3 | C5:3 | 0 | 3 | 3 |
3個(gè)consumer消費(fèi)消息總條數(shù):8+3+3+3+3 = 20條
2臺(tái)master機(jī)器,每個(gè)topic有8個(gè)隊(duì)列, 期望的隊(duì)列個(gè)數(shù) 2*8=16個(gè),實(shí)際的隊(duì)列個(gè)數(shù) 4+3+3+3+3 = 16個(gè),可以看出期望、實(shí)際的queue分布是相同的結(jié)果。
producer的發(fā)送記錄:
consumer1的消費(fèi)記錄:
consumer2的消費(fèi)記錄:
consumer3的消費(fèi)記錄:
consumer4的消費(fèi)記錄:
consumer5的消費(fèi)記錄:
第二組,總發(fā)送條數(shù)20條
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 (期望) | Reblance結(jié)果 (實(shí)際) | Master機(jī)器 | 消費(fèi)條數(shù) | |
Master1 | Master2 | |||||
8 | 8 | C1:2 | C1:2 | 2 | 0 | 4 |
C2:2 | C2:2 | 0 | 2 | 2 | ||
C3:2 | C3:2 | 0 | 2 | 2 | ||
C4:2 | C4:2 | 0 | 2 | 2 | ||
C5:2 | C5:2 | 0 | 2 | 2 | ||
C6:2 | C6:2 | 2 | 0 | 4 | ||
C7:2 | C7:2 | 2 | 0 | 2 | ||
C8:2 | C8:2 | 2 | 0 | 2 |
8個(gè)consumer消費(fèi)消息總條數(shù):8+3+3+3+3 = 20條
2臺(tái)master機(jī)器,每個(gè)topic有8個(gè)隊(duì)列, 期望的隊(duì)列個(gè)數(shù) 2*8=16個(gè),實(shí)際的隊(duì)列個(gè)數(shù) 2+2+2+2+2+2+2+2 = 16個(gè),可以看出期望、實(shí)際的queue分布是相同的結(jié)果。
8個(gè)consumer消費(fèi)消息總條數(shù):4+2+2+2+2+2+4+2+2 = 20條
producer的發(fā)送記錄:
consumer1的消費(fèi)記錄:
consumer2的消費(fèi)記錄:
consumer3的消費(fèi)記錄:
consumer4的消費(fèi)記錄:
consumer5的消費(fèi)記錄:
consumer6的消費(fèi)記錄:
consumer7的消費(fèi)記錄:
consumer8的消費(fèi)記錄:
第三組,總發(fā)送條數(shù)20條
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 (期望) | Reblance結(jié)果 (實(shí)際) | Master機(jī)器 | 消費(fèi)條數(shù) | |
Master1 | Master2 | |||||
8 | 4 | C1:4 | C1:4 | 4 | 0 | 8 |
C2:4 | C2:4 | 4 | 0 | 4 | ||
C3:4 | C3:4 | 0 | 4 | 4 | ||
C4:4 | C4:4 | 0 | 4 | 4 |
8個(gè)consumer消費(fèi)消息總條數(shù):8+3+3+3+3 = 20條
2臺(tái)master機(jī)器,每個(gè)topic有8個(gè)隊(duì)列, 期望的隊(duì)列個(gè)數(shù) 2*8=16個(gè),實(shí)際的隊(duì)列個(gè)數(shù) 4+4+4+4 = 16個(gè),可以看出期望、實(shí)際的queue分布是相同的結(jié)果。
8個(gè)consumer消費(fèi)消息總條數(shù):8+4+4+4 = 20條
producer的發(fā)送記錄:
consumer1的消費(fèi)記錄:
consumer2的消費(fèi)記錄:
consumer3的消費(fèi)記錄:
consumer4的消費(fèi)記錄:
第四組,總發(fā)送條數(shù)20條
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 (期望) | Reblance結(jié)果 (實(shí)際) | Master機(jī)器 | 消費(fèi)條數(shù) | |
Master1 | Master2 | |||||
4 | 8 | C1:1 | C1:1 | 1 | 0 | 3 |
C2:1 | C2:1 | 1 | 0 | 3 | ||
C3:1 | C3:1 | 0 | 1 | 2 | ||
C4:1 | C4:1 | 0 | 1 | 2 | ||
C5:1 | C5:1 | 0 | 1 | 2 | ||
C6:1 | C6:1 | 0 | 1 | 2 | ||
C7:1 | C7:1 | 1 | 0 | 3 | ||
C8:1 | C8:1 | 1 | 0 | 3 |
8個(gè)consumer消費(fèi)消息總條數(shù):8+3+3+3+3 = 20條
2臺(tái)master機(jī)器,每個(gè)topic有8個(gè)隊(duì)列, 期望的隊(duì)列個(gè)數(shù) 2*4=8個(gè),實(shí)際的隊(duì)列個(gè)數(shù) 1+1+1+1+1+1+1+1= 8個(gè),可以看出期望、實(shí)際的queue分布是相同的結(jié)果。
8個(gè)consumer消費(fèi)消息總條數(shù):3+3+2+2+2+2+3+3 = 20條
producer的發(fā)送記錄:
consumer1的消費(fèi)記錄:
consumer2的消費(fèi)記錄:
consumer3的消費(fèi)記錄:
consumer4的消費(fèi)記錄:
consumer5的消費(fèi)記錄:
consumer6的消費(fèi)記錄:
consumer7的消費(fèi)記錄:
consumer8的消費(fèi)記錄:
第五組,總發(fā)送條數(shù)20條
隊(duì)列數(shù)量 | Consumer數(shù)量 | Reblance結(jié)果 (期望) | Reblance結(jié)果 (實(shí)際) | Master機(jī)器 | 消費(fèi)條數(shù) | |
Master1 | Master2 | |||||
3 | 7 | C1:1 | C1:1 | 0 | 1 | 3 |
C2:1 | C2:1 | 1 | 0 | 4 | ||
C3:1 | C3:1 | 0 | 1 | 3 | ||
C4:1 | C4:1 | 1 | 0 | 3 | ||
C5:1 | C5:1 | 1 | 0 | 4 | ||
C6:1 | C6:1 | 0 | 1 | 3 | ||
C7:0 | C7:0 | 0 | 0 | 0 |
8個(gè)consumer消費(fèi)消息總條數(shù):8+3+3+3+3 = 20條
2臺(tái)master機(jī)器,每個(gè)topic有8個(gè)隊(duì)列, 期望的隊(duì)列個(gè)數(shù) 2*3=6個(gè),實(shí)際的隊(duì)列個(gè)數(shù) 1+1+1+1+1+1+0 = 6個(gè),可以看出期望、實(shí)際的queue分布是相同的結(jié)果。
8個(gè)consumer消費(fèi)消息總條數(shù):3+4+3+3+4+3+0 = 20條
producer的發(fā)送記錄:
consumer1的消費(fèi)記錄:
consumer2的消費(fèi)記錄:
consumer3的消費(fèi)記錄:
consumer4的消費(fèi)記錄:
consumer5的消費(fèi)記錄:
consumer6的消費(fèi)記錄:
consumer7的消費(fèi)記錄:
二 評(píng)測(cè)結(jié)果
1、rocketmq集群消費(fèi)模式,訂閱消息的確達(dá)到了隊(duì)列負(fù)載均衡,與這種負(fù)載均衡消費(fèi)相關(guān)的因素有: master機(jī)器個(gè)數(shù)、 特定topic的queue個(gè)數(shù),這兩個(gè)數(shù)值相乘,才是rocketmq最終計(jì)算隊(duì)列的總數(shù)。
2、rocketmq的集群消費(fèi)能力,保證消息準(zhǔn)確性,完整性,所有被消費(fèi)的消息總數(shù)與producer端發(fā)送的消息總數(shù)是一致的,不存在消息丟棄的情況。
3、分析consumer消費(fèi)日志,說(shuō)明每條消息在相同consumerGroup組的不同consumer端中僅僅只會(huì)被消費(fèi)一次。
4、在集群消費(fèi)模式下,如果consumer的總數(shù),超過(guò)了隊(duì)列總數(shù),那么多余的consumer端將不能消費(fèi)消息。
以上是“如何實(shí)現(xiàn)Rocketmq集群消費(fèi)測(cè)試”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。