日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

從 Pulsar Client 的原理到它的監控面板

來源: 責編: 時間:2023-08-05 11:44:50 4682觀看
導讀背景前段時間業務團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產者消息發送緩慢等各種問題。雖然我們有個監控頁面可以根據 topic 維度查看他的發送狀態,比如速率、流量、消費狀態等信息。但也有幾

nOA28資訊網——每日最新資訊28at.com

背景

前段時間業務團隊偶爾會碰到一些 Pulsar 使用的問題,比如消息阻塞不消費了、生產者消息發送緩慢等各種問題。nOA28資訊網——每日最新資訊28at.com

雖然我們有個監控頁面可以根據 topic 維度查看他的發送狀態,比如速率、流量、消費狀態等信息。nOA28資訊網——每日最新資訊28at.com

圖片nOA28資訊網——每日最新資訊28at.com


nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

本文重點不在于此,具體代碼就不仔細分析了。nOA28資訊網——每日最新資訊28at.com

從上圖可以看出,如果我們想要監控消費是否存在阻塞的情況,這幾個內部隊列是需要重點監控的,一旦他們出現堆積,那就會出現消費阻塞。nOA28資訊網——每日最新資訊28at.com

其實這些數據都可以通過。nOA28資訊網——每日最新資訊28at.com

org.apache.pulsar.client.api.ProducerStatsorg.apache.pulsar.client.api.ConsumerStats

這兩個接口獲取到生產者和消費者的大部分指標,只是這里還有一個小插曲。nOA28資訊網——每日最新資訊28at.com

那就是在獲取消費者隊列大小的時候,獲取到的數據一直為空。nOA28資訊網——每日最新資訊28at.com

最終經過源碼排查,原來是我們大量使用的 messageListener 在獲取隊列大小時有 bug,導致獲取到的數據一直都為 0.nOA28資訊網——每日最新資訊28at.com

相關的 issue 和 PR 可以在這兩個鏈接查看,問題原因和修復過程都有具體描述:https://github.com/apache/pulsar/issues/20076 https://github.com/apache/pulsar/pull/20245nOA28資訊網——每日最新資訊28at.com

但這個修復得在新版本才能使用,就導致我們現在的監控頁面一直顯示為空。nOA28資訊網——每日最新資訊28at.com

開發 SkyWalking 插件

然后就是開發一個 SkyWalking 的插件了,其實直接使用 SW 開發插件是上手 Java-Agent 比較快的方式。nOA28資訊網——每日最新資訊28at.com

SW 的 SDK 封裝了許多 agent 原生接口,使得開發起來非常容易;當然缺點也有,就是得集成整個 SW 的 agent。nOA28資訊網——每日最新資訊28at.com

這里我簡單介紹下這個插件的運行流程:nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

  • 在創建和刪除 consumer 的時候維護 consumerPool
  • 啟動一個定時任務,定期從這些 consumer 中獲取指標數據。

nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

當消費多分區 topic 時,為了能唯一標志一個 consumer,所以給每個消費者都加了一個 hashcode 的 label。nOA28資訊網——每日最新資訊28at.com

因為我們所有的 Java 技術棧都是使用的 Prometheus 的包來生成 metrics ,所以該插件也是使用該包生成的數據。nOA28資訊網——每日最新資訊28at.com

<dependency>    <groupId>io.prometheus</groupId>    <artifactId>simpleclient</artifactId>    <version>0.12.0</version>    <scope>provided</scope>  </dependency>

為了兼容一些特殊 Java 應用沒有該包時會啟動報錯,所以在初始化插件的時候需要檢測當前 classpath 下是否存在該依賴。nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

這些功能 SW 已經封裝好了,對我們來說也是開箱即用。nOA28資訊網——每日最新資訊28at.com

其實 SW 插件自己也是支持 metrics 的,由于我們只是使用了它的 trace 功能,所以這里就沒有使用它的 API。nOA28資訊網——每日最新資訊28at.com

關于開發一個 SW 插件的流程也比較簡單,可以參考官方文檔或者是一些現成的插件源碼。https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/java-plugin-development-guide/nOA28資訊網——每日最新資訊28at.com

總結

有了這個監控面板后,對于 Pulsar 客戶端內部的一些運行情況就不再是黑盒了,還可以基于此做一些報警,比如消費堆積、發送延遲過大等。nOA28資訊網——每日最新資訊28at.com

當然僅僅只有這個面板依然是不夠的,后續我們又開發了可以通過 messageId 查詢它的整個生命周期,包括:nOA28資訊網——每日最新資訊28at.com

  • 生產者、消費者信息
  • 消息生產時間
  • 推送時間
  • ack 時間等

nOA28資訊網——每日最新資訊28at.com

同時借助與 Pulsar-SQL 的能力,還能以列表的形式展示當前 topic 的消息列表。nOA28資訊網——每日最新資訊28at.com

nOA28資訊網——每日最新資訊28at.com

當然在實現這兩個功能的同時也踩了不少坑,提了幾個 PR ,后面在抽時間做具體的分享。nOA28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-91-0.html從 Pulsar Client 的原理到它的監控面板

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 一年經驗在二線城市面試后端的經驗分享

下一篇: 三言兩語說透設計模式的藝術-單例模式

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 沂源县| 漠河县| 旬阳县| 东山县| 南京市| 菏泽市| 肃南| 大余县| 深水埗区| 洪雅县| 固安县| 凤冈县| 西乌珠穆沁旗| 博爱县| 津南区| 宁津县| 林芝县| 故城县| 新竹县| 锡林郭勒盟| 来宾市| 汾阳市| 浦东新区| 建昌县| 通辽市| 玉龙| 罗城| 石屏县| 织金县| 内乡县| 怀宁县| 兴和县| 陆川县| 政和县| 石渠县| 望江县| 和平县| 兴城市| 余姚市| 北流市| 探索|