日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例

發布時間:2024/9/3 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:JAVA應用開發MQ實戰最佳實踐——Series2:消息隊列RocketMQ性能測試案例

往期內容

JAVA應用開發MQ實戰最佳實踐——Series1:RocketMQ綜述及代碼設計

1. 消息隊列RocketMQ性能測試案例

1.1 RocketMQ測試分析

客戶場景,信息共享交換平臺:
1.交換平臺需支持每秒萬級別數據傳輸
2.實現跨路段、跨部門、跨行業、跨區域信息即時共享,做到高可靠、低延遲

客戶現場展示場景設計思路:
1.針對性的編寫一套JAVA代碼來支撐本次MQ性能POC驗證。
2.選擇合適規格的單臺ECS,在單個TOPIC下運行多線程代碼實現和MQ的訂閱發送,統計1分鐘內訂閱和發送的數據交換TPS情況。
3.考慮POC也要符合客戶實際生產場景中MQ使用邏輯,ECS應運行4個獨立的JAR包,兩對JAR包交叉經過MQ進行數據交換。
4.消息體內的內容應打印到屏幕,通過消息軌跡驗證消息的被消費情況。
5.驗證結果:客戶指定場景下8線程異步,1分鐘TPS在10K以上。

1.2 創建資源

本章節詳細描述如何創建消息隊列 RocketMQ 版的資源。

1.2.1 創建RocketMQ實例

1.登錄Apsara Stack控制臺。
2.在左側導航欄中單擊中間件產品 > 消息隊列訪問管理控制臺界面。

3.在消息隊列頁面,選擇區域與部門后,單擊MQ,進入MQ控制臺。

4.單擊左側導航欄概覽后,在概覽頁面中,單擊創建實例。
5.在創建實例對話框,選擇實例類型,并輸入實例名和描述,然后單擊確認。

說明: 創建完實例后,單擊左側導航欄實例詳情,可以查看創建實例的Topic數上限、消息發送TPS上限、消息訂閱TPS上限和TCP協議接入地址等。

1.2.2 創建 Topic

Topic 是消息隊列 RocketMQ 版里對消息的一級歸類,例如可以創建 Topic_Trade 這一 Topic 來識別交易類消息,消息生產者將消息發送到 Topic_Trade,而消息消費者則通過訂閱該 Topic 來獲取和消費消息。
創建Topic要注意一下幾點:

  • Topic 不能跨實例使用,例如在實例 A 中創建的 Topic A 不能在實例 B 中使用。
  • Topic 名稱必須在同一實例中是唯一的。
  • 您可創建不同的 Topic 來發送不同類型的消息,例如用 Topic A 發送普通消息,Topic B 發送事務消息,Topic C 發送定時/延時消息。

1.在控制臺左側導航欄,單擊 Topic 管理。
2.在 Topic 管理頁面上方選擇剛創建的實例,單擊創建 Topic 按鈕。

3.在創建 Topic 對話框中的 Topic 一欄,輸入 Topic 名稱,選擇該 Topic 對應的消息類型,輸入該 Topic 的備注內容,然后單擊確定。

1.2.3 創建 Group ID

創建完實例和 Topic 后,您需要為消息的消費者(或生產者)創建客戶端 ID ,即 Group ID 作為標識。

  • Group ID 必須在同一實例中是唯一的。
  • Group ID 和 Topic 的關系是 N:N,即一個消費者可以訂閱多個 Topic,同一個 Topic 也可以被多個消費者訂閱;一個生產者可以向多個 Topic 發送消息,同一個 Topic 也可以接收來自多個生產者的消息。

1.在控制臺左側導航欄,單擊 Group 管理。
2.在 Group 管理頁面上方選擇剛創建的實例,然后選擇TCP協議 > 創建Group ID 。本文以 TCP 協議為例。

3.在創建 Group ID 對話框中,輸入 Group ID 和描述,然后單擊確認。

1.3 場景落地

1.準備p1,c1,p2,c2雙發送雙訂閱應用小程序,p1、p2小程序參考“第二章節”生產者異步發送消息代碼,c1、c2小程序參考“第二章節”消費者集群訂閱消息代碼
p1-8081.jar
c1-8083.jar
p2-8082.jar
c2-8084.jar
2.通過Xshell連接到專有云ops1環境,把準備的4個jar包上傳至一臺16c32gECS服務器上

3.同時在該目錄下編寫啟動4個jar包的start.sh腳本:
#!/bin/bash
nohup java -jar p1-8081.jar &
nohup java -jar p2-8081.jar &
nohup java -jar c1-8081.jar &
nohup java -jar c2-8081.jar &
4.編寫停用4個jar包的stop.sh腳本:

5.編寫請求消息隊列2個發送和2個訂閱接口的curl腳本:
#!/bin/bash
curl http://192.168.0.150:8081/echo-sync-final-send
curl http://192.168.0.150:8082/echo-sync-final-send
curl http://192.168.0.150:8083/echo-final-mq
curl http://192.168.0.150:8084/echo-final-mq
6../start.sh執行啟動4個jar包,通過tail -f nohup.out查看啟動日志,每個jar包啟動完成日志如下:

7.通過ps -ef | grep jar確認4個jar是否在ECS服務器運行,有如下圖則表示4個應用小程序運行正常:

8../curl.sh執行請求2個消息發送和2個消息訂閱接口,請求之后我們查看一下程序后臺日志發現代碼打印的消息發送和消息訂閱的日志不停的在刷,截取單條消息發送日志如下:

截取單條消息訂閱日志如下:

1.4 消息查詢

如遇消息消費有問題,則可通過查詢具體發送的消息內容來排查問題。消息隊列 RocketMQ 版提供了三種消息查詢的方式,分別是按 Message ID、Message Key 以及 Topic 查詢。

1.4.1 查詢方式說明

三種查詢方式的特點和對比如下表所述。
表1:查詢方式對比

1.4.2 推薦查詢過程

推薦按照以下流程查詢消息。

1.4.3 查詢步驟

1.登錄MQ控制臺。
2.在左側導航欄,單擊消息軌跡。
3.在消息軌跡頁面,您可單擊以下任一頁簽,然后按頁面提示輸入相應信息,再單擊搜索按鈕來查詢消息。

  • 按 Message ID 查詢

按 Message ID 查詢消息屬于精確查詢,您輸入 Topic 和 Message ID 即可精確查詢到任意一條消息。因此,為了盡可能精確地查詢,建議在發送消息成功后將 Message ID 信息打印到日志中,方便問題排查。

  • 按 Message Key 查詢

消息隊列 RocketMQ 版根據您設置的 Message Key 建立消息的索引信息,當您輸入 Key 進行查詢時,消息隊列 RocketMQ 版根據該索引即可匹配相關的消息返回。

  • 按 Topic 查詢

按 Topic 查詢一般用在 Message ID 和 Message Key 都無法獲得的情況下,根據 Topic 和消息的發送時間范圍,批量獲取該時間范圍內的所有消息,然后再找到關心的數據。

4.在操作欄中單擊消息詳情,可查看到軌跡的簡要信息,主要是消息本身的屬性以及接收狀態的信息。

5.在展開的區域中,單擊查看軌跡即可查看完整的鏈路圖。下圖示例為在 TCP 協議下,按 Message ID 查詢普通消息的軌跡。

對于 Message Key 和 Topic 查詢方式,如果匹配到多條軌跡,可以進行上下翻頁,查看比對軌跡數據。

1.4.4 查詢結果說明

您可以在控制臺的消息查詢頁面看到查詢到的消息。直接顯示的信息包含 Message ID、Tag、Key 和存儲時間。此外,您還可以在每一行消息操作列下載消息內容、查詢信息軌跡以及查看消息詳情。
投遞狀態是消息隊列 RocketMQ 版根據各個 Group ID 的消費進度計算出的結果,投遞狀態的信息如下表所示。
表 2: 消息投遞狀態

1.4.5 消費驗證

消息隊列 RocketMQ 版提供了消費驗證功能,該功能可以將指定消息推送給指定的在線客戶端,以檢測客戶端消費該消息的邏輯和結果是否符合預期。
說明: 消費驗證功能僅僅是用于驗證客戶端的消費邏輯是否正常,并不會影響正常的收消息流程,因此消息的消費狀態等信息在消費驗證后并不會改變。

1.5 查看消息生產數據

可供查看的消息生產數據是某個Topic在一個時間段內從Broker接收的消息的總量或者TPS。
1.登錄MQ控制臺。
2.在左側導航欄,單擊資源報表。
3.在資源報表頁面,單擊消息生產頁簽。
4.在Topic一欄,選擇Topic,并指定其他信息,然后單擊搜索。
字段說明:

  • 采集類型:分為總量和TPS。總量提供該周期內Topic接收的消息總量;TPS提供每個周期內該Topic接收消息的平均TPS。
  • 采集周期:包括1分鐘、10分鐘后、30分鐘、1小時。采集周期決定了數據采集的時間間隔,周期越短,采集點越密集,消息消費數據越詳細。
  • 時間范圍:RocketMQ最多可以提供最近三天之內的消息的生產查詢。

查詢結果以圖表的形式顯示

1.6 查看消息消費數據

可供查看的消息消費數據是某個Topic在一個時間段內投遞給某個Group ID的消息的總量或TPS。
具體操作步驟如下:
1.登錄MQ控制臺。
2.在左側導航欄,單擊資源報表。
3.在資源報表頁面,單擊消息消費頁簽。
4.在Group ID和Topic欄,分別選擇您要查詢的Group ID和Topic。
5.指定其他信息,然后單擊搜索。
字段說明:

  • 采集類型:分為總量和TPS。總量提供每個周期內該Topic投遞給該Group ID的消息總量,TPS提供每個周期內該Topic投遞給該Group ID消息的平均TPS。
  • 采集周期:包括1分鐘、10分鐘后、30分鐘、1小時。采集周期決定了數據采集的時間間隔,周期越短,采集點越密集,消息消費數據越詳細。
  • 時間范圍:RocketMQ最多可以提供最近三天之內的消息的消費查詢。

查詢結果以圖表的形式顯示

我們是阿里云智能全球技術服務-SRE團隊,我們致力成為一個以技術為基礎、面向服務、保障業務系統高可用的工程師團隊;提供專業、體系化的SRE服務,幫助廣大客戶更好地使用云、基于云構建更加穩定可靠的業務系統,提升業務穩定性。我們期望能夠分享更多幫助企業客戶上云、用好云,讓客戶云上業務運行更加穩定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里云SRE技術學院釘釘圈子,和更多云上人交流關于云平臺的那些事。

原文鏈接:https://developer.aliyun.com/article/779502?

版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

總結

以上是生活随笔為你收集整理的JAVA应用开发MQ实战最佳实践——Series2:消息队列RocketMQ性能测试案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。