Kafka集群中一台broker掛掉的處理過程


controller在啟動時會注冊zk監聽器來監聽zookeeper中的/brokers/ids節點下的子節點變化,即集群中所有的broker列表,而每台broker在啟動時會向zk的/brokers/ids下寫入一個名字為broker.id的臨時節點,當該broker掛掉或與zk斷開連接時,此臨時節點會被移除,之后controller端的監聽器就會自動感知這個變化並將BrokerChange時間寫入到controller上的請求阻塞隊列里。

一旦controller端從阻塞隊列中獲取到該事件,她會開啟BrokerChange事件的處理邏輯,具體包括

1 獲取當前存活的broker列表

2 根據之前緩存的broker列表計算出當前已經掛掉的broker列表

3 更新controller端緩存

4 對於當前所有存活的broker,更新元數據信息並且啟動新broker上的分區和副本

5 對於掛掉的那些broker,處理這些broker上的分區副本(標記為offline已經執行offline邏輯並更新元數據)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM