刪除Kafka無用主題可提升40%效能
linkedin啟動TopicGC刪除Kafka不用的topic後,已經刪除了近20%的topic,大大降低了Kafka叢集的後設資料壓力。客戶端請求效能提高了 40% 左右,CPU 使用率降低了 30%。
Apache Kafka 是一個開源的事件流平臺,使用者可以在其中建立 Kafka 主題作為資料傳輸單元,然後與生產者和消費者釋出或訂閱該主題。雖然大多數 Kafka 主題都被積極使用,但由於業務需求發生變化或主題本身是短暫的,因此不再需要某些主題。
Kafka 本身沒有自動檢測未使用的主題並刪除它們的機制。這通常不是什麼大問題,因為 Kafka 叢集可以容納相當多的主題,數百到數千個。
但是,如果主題數量不斷增長,它最終會遇到瓶頸並對整個 Kafka 叢集產生破壞性影響。
linkedin的TopicGC 服務就是為了解決這個問題而誕生的。事實證明,刪除約 20% 的主題可以減少 Kafka 的壓力:
後設資料壓力
出於主題管理的目的,Kafka 將主題的後設資料儲存在多個位置,包括 Apache ZooKeeper 和每個代理上的後設資料快取。主題後設資料包含分割槽和副本分配的資訊。
我們這裡做個簡單的計算:topic A可以有25個partition,複製因子為3,也就是說每個partition有3個replicas。即使主題 A 不再被使用,Kafka 仍然需要將所有 75 個副本的位置資訊儲存在某個地方。
後設資料壓力對單個主題的影響可能不那麼明顯,但如果主題很多,它就會產生很大的影響。後設資料可以消耗來自 Kafka 代理和 ZooKeeper 節點的記憶體,並且可以向後設資料請求新增有效負載。
獲取請求
在 Kafka 中,follower 副本定期向 leader 副本傳送獲取請求以與 leader 保持同步。即使對於空主題和分割槽,追隨者仍會嘗試與領導者同步。因為 Kafka 不知道一個主題是否永久未使用,它總是強制跟隨者從領導者那裡獲取。這些冗餘的獲取請求將進一步導致建立更多的獲取執行緒,這可能會導致額外的網路、CPU 和記憶體佔用,並可能支配請求佇列,導致其他請求被延遲甚至丟棄。
控制器初始化
Kafka 控制器是協調和管理 Kafka 叢集中其他代理的代理。許多 Kafka 請求必須由控制器處理,因此控制器可用性對 Kafka 至關重要。
在控制器故障轉移時,必須選出一個新控制器並接管管理叢集的角色。新的controller在充當controller之前,會從ZooKeeper中載入整個叢集的後設資料,這個時間叫做controller initialization time。正如本文前面提到的,未使用的主題會生成額外的後設資料,使控制器初始化速度變慢,並威脅到 Kafka 的可用性。當 ZooKeeper 響應大於 1MB 時,可能會出現問題。對於我們最大的叢集之一,ZooKeeper 響應已經達到 0.75MB,我們預計在兩到三年內它將遇到瓶頸。
詳細點選標題
相關文章
- ORACLE批量刪除無主鍵重複資料Oracle
- terraform-provider-kafka:用於管理Kafka主題和ACLORMIDEKafka
- mysql刪除主鍵索引,刪除索引語法MySql索引
- Kafka超過保留期限資料未刪除的問題Kafka
- Kafka2.6.0釋出——效能大幅提升Kafka
- kafka-eagle刪除topic需要tokenKafka
- oracle adg主庫通過rman無法刪除歸檔Oracle
- VSCode 如何刪除無用的語言格式?VSCode
- Kafka 主題 CLI 教程Kafka
- kafka-- 過期檔案的刪除Kafka
- PicGo無法刪除雲端圖片問題PicGo
- iOS程式碼瘦身實踐:刪除無用的類iOS
- 電腦檔案被佔用無法刪除?Win10系統檔案被佔用無法刪除的解決方法Win10
- 主鍵的建立、新增、刪除操作
- mysql-刪除和新增主鍵MySql
- 也來談談無法刪除db link的問題
- photoshop無法刪除圖層
- docker筆記40-ceph osd誤刪除恢復Docker筆記
- win10如何刪除hao123主頁 徹底刪除hao123主頁的方法Win10
- 解密Kafka主題的分割槽策略:提升實時資料處理的關鍵解密Kafka
- win10需要administrators許可權才能刪除檔案怎麼刪除Win10
- win10怎麼刪除系統服務_win10刪除系統無用服務教程Win10
- 無法刪除pod的處理
- 七牛雲端儲存資料,刪除無用資料
- .NET 6相比.NET 5效能提升高達40% - alexyakunin
- 主題 :學習與自我提升
- MariaDB刪除重複記錄效能測試
- u盤裡的檔案無法刪除 如何刪除u盤裡刪不掉的檔案
- 華為麒麟980效能曝光:3GHz主頻 效能大幅提升
- 通過RMAN設定standby接收日誌後主庫歸檔日誌才可刪除
- win10怎麼刪除無效的服務_win10刪除無效的服務方法Win10
- Elastic Beanstalk-自動生成的S3無法刪除問題ASTBeanS3
- Rust不使用正規表示式如何刪除字串中的無用空格?Rust字串
- win10如何徹底刪除hao123主頁 win10徹底刪除hao123主頁的方法Win10
- 一次Android許可權刪除經歷Android
- win10系統刪除檔案時提示administrator許可權才能刪除如何解決Win10
- 使用 preloadRouteComponents 提升 Nuxt 應用的效能UX
- 高效能無鎖佇列 Disruptor 核心原理分析及其在i主題業務中的應用佇列