【訊息佇列面試】6-10:Rebalance機制、副本同步機制、架構設計、zk的作用、kafka的高效能
六、簡述kafka的Rebalance【偏向實戰,有難度】
1、背景
kafka日誌:在訊息量大、高併發時,經常會出現rebalance中
rebalance會影響kafka效能,會阻塞partition的讀寫操作
2、瞭解其機制,以避免rebalance的發生
3、Rebalance是什麼
coordinator:leader節點所在的broker,作為一個協調者,監控cg中消費者的存活,判斷consumer是否消費超時
七、kafka的副本同步機制
注意:LEO從哪落盤、HW從哪消費【更新】、最後已被消費、最先待消費、起始的offset
leader(處理讀寫請求)和多個follower(負責資料同步),主備模式
根據offset判斷消費到了哪裡
LEO:待寫入資料的index
HW:HW前(下面)的資料對消費者可見,能夠被消費者消費
第一條未提交的資料
最後一條已提交的資料
leader和follower都有HW,LEO會選擇ISR中最小的HW和自身LEO進行寫入,LEO落盤後,進行+1
當leader掛掉,變為follower後,follower的HW會覆蓋當前節點的HW,從而會導致資料的丟失
訊息丟失的解決,會在後面講述
八、簡述kafka的架構設計
zk管理叢集,儲存一些元資訊,作為znode中的一個節點
topic類似於queue,特點是可以分割槽
cg中不同的consumer消費同一topic的不同分割槽【cg是邏輯上的概念,實際上還是一個消費者】
如果指定同一消費者組的多個消費者同時消費某個分割槽,則多個消費者則會互斥,訊息不會被重複傳送
九、kafka中zk的作用(老版本)
1、後續zk的作用越來越小
2、哪些作用
無生產者資訊,broker、topic、partition
十、kafka中高效能的原因
指其讀寫很快
順序寫、零拷貝
1、順序寫
kafka是一個日誌系統,寫到檔案中
不是存入記憶體中,訊息堆積能力強
硬碟是用磁頭隨機讀寫,而kafka是通過順序寫的方式(HBASE)
2、零拷貝
直接從磁碟讀入網絡卡中
通過作業系統來實現
3、不依賴於java堆記憶體
使用作業系統的pageCache,進行讀寫
本文來自部落格園,作者: