當前線上集群規模已經超過了600+broker,入流量超3萬億記錄/天,出流量超7萬億記錄/天,在巨大的流量實戰中,我們遇到了很多麻煩,這里抽了點時間梳理了一下,主要從應用層面、底層原理層面、開源版本功能缺陷三個方面進行了核心知識點的梳理,目前本文只是對核心知識點進行概括,并不會詳細描述每個知識點的細節,后續我將抽出時間來繼續整理完善細節,希望可以為大家提供一些幫助,
一、Kafka應用層面
1.版本升級;
1.1.如何滾動升級與回退;
2.資料/副本遷移;
2.1.broker間資料遷移;
2.2.broker內部磁盤間資料遷移;
3.流量限制;
3.1.生產者流量限制;
3.2.消費者流量限制;
3.3.follower副本同步leader副本流量限制;
4.運維監控告警;
4.1.硬體基礎監控:
4.1.1.網路
網路入流量、網路出流量、網路丟包、網路重傳、交換機
4.1.2.磁盤
磁盤write、磁盤read、磁盤ioutil、磁盤iowait、磁盤存盤空間、磁盤壞盤、磁盤壞塊/壞道
4.1.3.CPU
CPU空閑率/負載
4.1.4.記憶體
記憶體使用率
4.1.5.快取命中率
PageCache快取命中率
4.2.Kafka服務監控:
4.2.1.broker級別:
broker行程、broker出/入流量、broker連接數、broker網路空閑率、broker生產延時、broker消費延時、broker生產請求數、broker消費請求數、broker上分布leader個數、broker上分布副本個數、broker請求佇列
4.2.2.topic級別:
topic副本缺失、topic出/入流量、topic消費者消費延遲記錄、topic磁區leader切換
4.2.3.用戶級別
用戶出/入流量、用戶出/入流量被限制時間;
4.2.4.服務日志
對server端列印的錯誤日志進行監控告警;
4.3.客戶端應用監控;
4.3.1.生產者客戶端
維度:客戶端ID、客戶端IP、topic名稱、集群名稱、brokerIP;
指標:連接數、io等待時間、生產流量大小、生產記錄數、請求次數、請求延時、發送錯誤/重試次數等;
4.3.2.消費者客戶端
維度:客戶端ID、客戶端IP、topic名稱、集群名稱、消費組、brokerIP、topic磁區
指標:連接數、io等待時間、消費流量大小、消費記錄數、消費延時、topic磁區消費延遲記錄等
4.4.zookeeper監控;
4.4.1.zookeeper的行程監控;
4.4.2.zookeeper的leader切換;
4.4.3.zookeeper服務的錯誤日志監控;
5.資源隔離;
5.1.業務資源物理隔離(分資源組),不同業務互不影響;
6.集群歸類
6.1.日志集群;
6.2.監控集群;
6.3.計費集群;
6.4.商業化集群;
6.5.非商業化集群;
7.擴容/縮容;
7.1.topic擴容磁區;
7.2.集群節點擴容broker(新broker上線);
7.3.集群縮容(節點下線);
8.負載均衡;
8.1.開發自動負載均衡程式采集metrics指標,生成副本遷移計劃,并執行遷移;
8.2.broker間負載均衡、broker內部多塊磁盤間負載均衡;
9.安全認證;
9.1.生產者權限認證;
9.2.消費者權限認證;
9.3.指定遷移資料目錄安全認證;
10.集群容災;
10.1.跨機架容災;
10.2.跨集群容災;
10.3.跨機房容災;
11.引數/配置優化;
11.1.服務引數優化;
11.2.生產引數優化;
11.3.消費引數優化;
11.4.服務器內核引數優化;
12.硬體層面優化;
12.1.采用SSD固態硬碟代替HDD(機械盤);
12.2.采用更大記憶體服務器,比如256GB及以上;
12.3.配置更高的網路帶寬,比如 10Gb/s及以上;
13.業務大屏;
集群個數、節點個數、存盤大小、用戶個數、topic個數、磁區個數、副本個數、消費組個數、生產延時、消費延時、生產流量、消費流量、資料可靠性/完整性;
14.集群管理
14.1.集群配置管理;
14.2.集群滾動重啟;
15.集群治理
15.1.無生產/消費的topic從集群中清理掉;
15.2.消費延遲較高的topic磁區監控告警,并讓相應的消費方檢查延遲較大原因及解決措施;
16.mock功能
16.1.生產mock;
16.2.消費mock;
17.集群IP、域名映射
17.1.上線broker添加域名到broker的映射;
17.2.下線broker剔除域名與broker的映射;
18.性能測驗評估
18.1.根據性能測驗結果評估broker節點個數及磁區個數;
二、Kafka底層原理層面
1.生產者實作細節;
1.1.如何獲取元資料;
1.2.添加磁區后如何感知;
1.3.磁區leader切換后如何感知;
1.4.資料如何存盤;
1.5.如果acks被設定為-1,則如何進行回呼;
2.消費者實作細節;
1.1.如何獲取元資料;
1.2.添加磁區后如何感知;
1.3.磁區leader切換后如何感知;
1.4.添加新的消費者實體如何均衡;
1.5.如何檢索訊息;
3.副本遷移實作細節;
3.1.不帶指定資料目錄的遷移(broker間資料遷移);
3.2.帶指定資料目錄的遷移(broker間資料遷移及broker內部資料目錄遷移);
4.topic的增、刪、改、查實作細節;
5.controller的選舉細節;
6.topic磁區leader選舉實作細節;
7.Metrics指標實作細節;
8.quota流量限制實作細節;
9.時間輪實作細節;
10.安全認證實作細節;
11.事務實作細節;
12.topic磁區資料過期處理實作細節;
13.動態配置實作細節;
13.1.broker、topic、user配置動態管理;
14.topic磁區isr串列變化如何處理;
14.1.isr串列收縮;
14.2.isr串列擴展;
15.日志資料存盤細節;
15.1.日志目錄結構;
15.2.日志內容格式;
三、kafka開源版本功能缺陷
1.副本遷移;
1.1.當需要終止遷移任務時,無法終止遷移任務;【當前我們已經完成原始碼改造,實作了終止遷移新特性】
1.2.只能串行遷移,不能同時提交多個遷移任務;【當前我們已經完成原始碼改造,實作了并發副本遷移】
1.3.當topic磁區資料量巨大時,資料遷移變得漫長且對broker對io產生巨大壓力,影響到來集群穩定性;【當前我們已經完成原始碼改造,實作了增量副本遷移】
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/177949.html
標籤:其他
上一篇:Java學習路線圖
