中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

發布時間:2021-12-17 14:27:00 來源:億速云 閱讀:200 作者:小新 欄目:云計算

這篇文章給大家分享的是有關如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一 機器部署

1、機器組成 

7臺機器,均為16G內存

每臺服務器均有4個CPU,2核

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    2、運行環境配置

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

3、刷盤方式

每臺機器master機器均采用異步刷盤方式

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

 

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

二 性能評測

1、評測目的

   測試queue接受消息負載均衡

2、評測指標

   每個queue的接受消息后,其偏移量offset大致相同

3、評測邏輯

  創建topic,并配置該topic下的queue數量(3,5,8,16),發送消息后打印該條消息對應的offset,比對消息offset增加量

4、評測過程

    (1)在master機器上創建名稱為“topicQueueOffsetTest”

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    (2)控制臺創建的topic配置文件保存在store目錄, 查看/root/store/config/topic.json文件,即可找到該topic的原始數據

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    (3)client端開啟5個線程,發送不同數量的消息,發送消息后記錄消息在各隊列queue的offset

    queue配置的是默認值8, 發送的消息條數 5*50=250條消息

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

        queue配置的是默認值8, 發送的消息條數 5*400=2000條消息

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

        客戶端設置queue隊列數為12,再次發送的消息條數 5*400=2000條消息,并記錄消息的offset,關鍵代碼如下

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    此處日志顯示的 queueNum=12,是指的client端的producer獲取的queue個數,但此時后續的日志顯示,server端的queueID依然是0-7,總共8個,兩種queue的個數并不相等。

    說明在producer發送消息時,對于此前已運行的borker服務器,修改配置文件的defaultTopicQueueNums屬性的值不起作用,需要重啟服務才能使得 已運行的topic的queue個數真正生效。

    有兩種方式,可動態更改topic以及topic相關的屬性,

    第一種、編輯 master機器的/root/store/config/topic.json文件,找到topic名稱為"topicQueueOffsetCheck"的數據,更新其readQueueNums、writeQueueNums兩個屬性,并重啟master集群和slave集群

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    第二種方式:在rocketmq控制臺動態更新topic相關數據(此方式更改后,會自動同步topic數據到其他master、其他slave,可以不用重啟master、slave服務),此處我采用的是第二種方式更新。

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    更新server端的queue為12,再次發送2000條消息,發現新舊兩種隊列的消息offset基本已達到均衡。

    queueId為0-7的隊列,消息較多,各個隊列的消息offset幾乎相同,消息負載平衡;

    queueId為8-11的隊列,消息較少,是為新增的4個隊列,這四個隊列之間的offset也基本達到了平衡。

    縱觀這12個隊列保存的消息, queueId=0的隊列,上一次的offset偏移量為508,本次offset=594,差值594-508=86,其余quereId的消息差異量也基本在83左右。說明 動態更新queueNums,水平擴容之后, queue隊列在接受到消息后任能夠均衡存儲消息。

    從此例分析出:queue收到的消息均衡分布,指的是每個queue每次收到消息的增加量能達到均衡;并不是指擴容后新增的queue隊列的offset需要從0增加到原有隊列的offset,而原有queue需等待直至所有queue的消息偏移量offset均達到同一水平的情況。

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

    保持queueNums=12不變,增大線程個數和次數,發送6*3000=18000條消息,再次記錄消息offset,最終結果如下,所有queue的“接受消息”的新增偏移量,均能達到平衡。

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

 

保持queueNums=12不變,增大線程個數和次數,發送6*4000=24000條消息,記錄保存消息的brokerName、queueId。

分析日志,可得出結論,消息的確均衡分布到了 broker-master1、broker-master2兩臺機器的各個隊列。

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試

二 評測結果

   1、客戶端發送的消息,服務器集群收到消息后,能均衡分布到集群的每臺多臺master機器,且每臺機器的每個queue接受到的消息也是均衡分布。

   2、動態增加queueNums個數,水平擴容之后,新增的、原來的queue接受到的消息數也能達到均衡分布。

   3、服務端創建topic時會設置默認的queueNums數值,該數值的優先級高于創建producer所設置的defaultQueueNums。

   4、對于已在運行的topic,若需動態更新topic的相關屬性,推薦使用rocketmq的控制臺,通過控制臺動態更新。

感謝各位的閱讀!關于“如何實現RocketMQ隊列queue的偏移量Offset均衡分布測試”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嵊泗县| 合水县| 四会市| 北安市| 柳州市| 镇康县| 屏边| 山西省| 乐安县| 湖南省| 汝阳县| 双鸭山市| 舒兰市| 麦盖提县| 内江市| 呼伦贝尔市| 巨鹿县| 武宁县| 赤水市| 高台县| 普陀区| 龙岩市| 龙川县| 华容县| 大新县| 自治县| 榆社县| 扎赉特旗| 缙云县| 南通市| 化德县| 长泰县| 舒兰市| 南投县| 宝坻区| 昌江| 西乡县| 平江县| 栾城县| 临沧市| 青阳县|