本文內容來自尚硅谷B站公開教學視頻,僅做個人總結、學習、復習使用,任何對此文章的引用,應當說明源出處為尚硅谷,不得用于商業用途。
如有侵權、聯系速刪
視頻教程鏈接:【尚硅谷】Kafka3.x教程(從入門到調優,深入全面)
文章目錄
- Kafka Broker工作流程
- Kakfa信息存儲在Zookeeper中
- Kafka Broker 總體工作流程
- Broker 重要參數
Kafka Broker工作流程
Kakfa信息存儲在Zookeeper中
Broker啟動后會在zk中注冊它的各種信息,如下圖
Kafka Broker 總體工作流程
① broker啟動,在zk中注冊信息
② 誰先注冊,誰成為Controller
③ Controller監聽聽brokers節點變化
④ Controller決定Leader選舉
⑤ Controller將節點信息上傳到ZK
⑥ 其他contorller從zk同步相關信息
正常的流程就結束了
⑦ 假設Broker1中Leader掛了
⑧ Controller監聽到節點變化
⑨ 獲取ISR(ISR是存儲了正常節點的隊列)
⑩ 選舉新的Leader(在isr中存活為前提,按照AR中排在前面的優先)
AR:Kafka分區中的所有副本統稱
11)更新Leader及ISR
Broker 重要參數
參數名稱 | 描述 |
---|---|
replica.lag.time.max.ms | ISR 中,如果 Follower 長時間未向 Leader 發送通信請求或同步數據,則該 Follower 將被踢出 ISR。該時間閾值,默認 30s。 |
auto.leader.rebalance.enable | 默認是 true。 自動 Leader Partition 平衡。 |
leader.imbalance.per.broker.percentage | 默認是 10%。每個 broker 允許的不平衡的 leader的比率。如果每個 broker 超過了這個值,控制器會觸發 leader 的平衡。 |
leader.imbalance.check.interval.seconds | 默認值 300 秒。檢查 leader 負載是否平衡的間隔時間。 |
log.segment.bytes | Kafka 中 log 日志是分成一塊塊存儲的,此配置是指 log 日志劃分 成塊的大小,默認值 1G。 |
log.index.interval.bytes | 默認 4kb,kafka 里面每當寫入了 4kb 大小的日志(.log),然后就往 index 文件里面記錄一個索引。 |
log.retention.hours | Kafka 中數據保存的時間,默認 7 天。 |
log.retention.minutes | Kafka 中數據保存的時間,分鐘級別,默認關閉。 |
log.retention.ms | Kafka 中數據保存的時間,毫秒級別,默認關閉。 |
log.retention.check.interval.ms | 檢查數據是否保存超時的間隔,默認是 5 分鐘。 |
log.retention.bytes | 默認等于-1,表示無窮大。超過設置的所有日志總大小,刪除最早的 segment。 |
log.cleanup.policy | 默認是 delete,表示所有數據啟用刪除策略;如果設置值為 compact,表示所有數據啟用壓縮策略。 |
num.io.threads | 默認是 8。負責寫磁盤的線程數。整個參數值要占總核數的 50%。 |
num.replica.fetchers | 副本拉取線程數,這個參數占總核數的 50%的 1/3 |
num.network.threads | 默認是 3。數據傳輸線程數,這個參數占總核數的50%的 2/3 。 |
log.flush.interval.messages | 強制頁緩存刷寫到磁盤的條數,默認是 long 的最大值,9223372036854775807。一般不建議修改,交給系統自己管理。 |
log.flush.interval.ms | 每隔多久,刷數據到磁盤,默認是 null。一般不建議修改,交給系統自己管理。 |