教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

如果leader崩潰,Kafka怎樣重新選舉?

更新時間:2021年10月29日14時15分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

leader對于消息的寫入以及讀取是非常關鍵的,此時有兩個疑問:

1. Kafka如何確定某個partition是leader、哪個partition是follower呢?

2. 某個leader崩潰了,如何快速確定另外一個leader呢?因為Kafka的吞吐量很高、延遲很低,所以選舉leader必須非??臁?/p>

如果leader崩潰,Kafka會如何?

使用Kafka Eagle找到某個partition的leader,再找到leader所在的broker。在Linux中強制殺掉該Kafka的進程,然后觀察leader的情況。

kafka

通過觀察,我們發(fā)現(xiàn),leader在崩潰后,Kafka又從其他的follower中快速選舉出來了leader。


Controller介紹

l Kafka啟動時,會在所有的broker中選擇一個controller

l 前面leader和follower是針對partition,而controller是針對broker的

l 創(chuàng)建topic、或者添加分區(qū)、修改副本數(shù)量之類的管理任務都是由controller完成的

l Kafka分區(qū)leader的選舉,也是由controller決定的


Controller的選舉

l 在Kafka集群啟動的時候,每個broker都會嘗試去ZooKeeper上注冊成為Controller(ZK臨時節(jié)點)

l 但只有一個競爭成功,其他的broker會注冊該節(jié)點的監(jiān)視器

l 一點該臨時節(jié)點狀態(tài)發(fā)生變化,就可以進行相應的處理

l Controller也是高可用的,一旦某個broker崩潰,其他的broker會重新注冊為Controller


找到當前Kafka集群的controller

1. 點擊Kafka Tools的「Tools」菜單,找到「ZooKeeper Brower...」

2. 點擊左側樹形結構的controller節(jié)點,就可以查看到哪個broker是controller了。

如果leader崩潰,Kafka怎樣重新選舉?


測試controller選舉

通過kafka tools找到controller所在的broker對應的kafka進程,殺掉該進程,重新打開ZooKeeper brower,觀察kafka是否能夠選舉出來新的Controller。

如果leader崩潰,Kafka怎樣重新選舉?

Controller選舉partition leader


l 所有Partition的leader選舉都由controller決定

l controller會將leader的改變直接通過RPC的方式通知需為此作出響應的Broker

l controller讀取到當前分區(qū)的ISR,只要有一個Replica還幸存,就選擇其中一個作為leader否則,則任意選這個一個Replica作為leader

l 如果該partition的所有Replica都已經(jīng)宕機,則新的leader為-1

為什么不能通過ZK的方式來選舉partition的leader?

l Kafka集群如果業(yè)務很多的情況下,會有很多的partition

l 假設某個broker宕機,就會出現(xiàn)很多的partiton都需要重新選舉leader

l 如果使用zookeeper選舉leader,會給zookeeper帶來巨大的壓力。所以,kafka中l(wèi)eader的選舉不能使用ZK來實現(xiàn)。





猜你喜歡:

為什么選擇kafka采集數(shù)據(jù)?

Kafka生產(chǎn)、消費數(shù)據(jù)的工作流程

kafka自定義攔截器實例教程[傳智教育]

Zookeeper是如何選取主leader的?

傳智python+大數(shù)據(jù)開發(fā)培養(yǎng)新型數(shù)字化人才

0 分享到:
和我們在線交談!