共計(jì) 3811 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下如何實(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é)果 52C1:3
C2:263C1:3
C2:31020C1-C10:1
C11-C20:0206C1: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 名稱(chēng)為“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ù)
Master1Master2
85C1:4C1:4408C2:3C2:3123
C3:3C3:3033
C4:3C4:3303
C5:3C5:3033
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ù)
Master1Master2
88C1:2C1:2204C2:2C2:2022
C3:2C3:2022
C4:2C4:2022
C5:2C5:2022
C6:2C6:2204
C7:2C7:2202
C8:2C8:2202
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ù)
Master1Master2
84C1:4C1:4408C2:4C2:4404
C3:4C3:4044
C4:4C4:4044
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ù)
Master1Master2
48C1:1C1:1103C2:1C2:1103
C3:1C3:1012
C4:1C4:1012
C5:1C5:1012
C6:1C6:1012
C7:1C7:1103
C8:1C8:1103
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ù)
Master1Master2
37C1:1C1:1013C2:1C2:1104
C3:1C3:1013
C4:1C4:1103
C5:1C5:1104
C6:1C6:1013
C7:0C7:0000
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)注丸趣 TV 行業(yè)資訊頻道!