程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> HubSpot是如何在 Sidekick 中監控 Kafka 性能

HubSpot是如何在 Sidekick 中監控 Kafka 性能

編輯:關於JAVA
 

Sidekick 是數字營銷公司 HubSpot 的一款產品,用於在接收者打開郵件時實時通知發送者。創建和發送通知的基礎設施以 Kafka 為基礎創建。Ze'ev Klapow 是 Sidekick 基礎設施團隊的一名資深軟件工程師。近日,他撰文介紹了他們如何在 Sidekick 中監控 Kafka 的性能。

  Sidekick 通知管道的架構大致如下:

HubSpot是如何在 Sidekick 中監控 Kafka 性能

  Ze'ev 指出,像上圖這樣就許多 Kafka 消費者連接在一起,需要監控每個消費者的性能,而且需要在消費者出現問題時快速定位。為此,他們開發了如下兩個指標。

  “增量(Delta)”

  該指標用於確定消費者是否能夠跟上某個主題的數據生成速度,如下圖所示:

HubSpot是如何在 Sidekick 中監控 Kafka 性能

  在 Kafka 中,每條消息會發送到某個主題的一個分區上,每條消息在寫入時會獲得一個遞增的偏移量數值。消費者在消費消息時會記錄它消費的最後一條消息的偏移量。增量即是該偏移量與分區頭之前差異。對於每個 Kafka 消費者,他們會記錄如下兩個增量數據:

  • 增量總和為所有分區的增量之和。增量總和增加說明消費者太慢或數據量太大,可以考慮擴展消費者,或者增加並發。

  • 最大增量為所有分區中的最大增量。最大增量增加說明只有一個工作進程出現問題,或者分區之間沒有實現很好的負載均衡。

  “延遲(Lag)”

  該指標用於監控消息處理延遲。在 Sidekick 中,他們會在所有的消息上都存儲一個時間戳。如下圖所示,總延遲為事件創建和通知發送之間的時間,可以幫助他們監控整個管道:

HubSpot是如何在 Sidekick 中監控 Kafka 性能

  另外,如下圖所示:

HubSpot是如何在 Sidekick 中監控 Kafka 性能

  他們還可以進行更細粒度地延遲監控,這有助於在總延遲開始偏離正常軌道時進行調試。

  按照 Ze'ev 的說法,上述兩個指標提供了系統健康狀況的一個完整視圖。當消費者出現問題時,他們首先會依據下表進行問題判斷:

HubSpot是如何在 Sidekick 中監控 Kafka 性能

  Ze'ev 表示,當出現問題時,此表可以為問題調試指明方向;當沒有問題時,此表可以讓他們對系統的性能更加自信。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved