副本的leader選舉

2021-10-17 20:25:27 字數 829 閱讀 5190

kafka提供了資料複製演算法保證,如果leader副本所在的broker節點宕機或者出現故障,或者分割槽的leader節點發生故障,這個時候怎麼處理呢?

那麼,kafka必須要保證從follower副本中選擇乙個新的leader副本。那麼kafka是如何實現選舉的呢?要了解leader選舉,我們需要了解幾個概念

kafka分割槽下有可能有很多個副本(replica)用於實現冗餘,從而進一步實現高可用。副本根據角色的不同可分為3類:

leader副本:響應clients端讀寫請求的副本

follower副本:被動地備份leader副本中的資料,不能響應clients端讀寫請求。

isr副本:包含了leader副本和所有與leader副本保持同步的follower副本——如何判定是否與leader同步後面會提到每個kafka副本物件都有兩個重要的屬性:leo和hw。注意是所有的副本,而不只是leader副本。

leo:即日誌末端位移(log end offset),記錄了該副本底層日誌(log)中下一條訊息的位移值。注意是下一條訊息!也就是說,如果leo=10,那麼表示該副本儲存了10條訊息,位移值範圍是[0, 9]。另外,leader leo和follower leo的更新是有區別的。我們後面會詳細說

hw:即上面提到的水位值。對於同乙個副本物件而言,其hw值不會大於leo值。小於等於hw值的所有訊息都被認為是「已備份」的(replicated)。同理,leader副本和follower副本的hw更新是有區別的

從生產者發出的 一 條訊息首先會被寫入分割槽的leader 副本,不過還需要等待isr集合中的所有follower副本都同步完之後才能被認為已經提交,之後才會更新分割槽的hw, 進而消費者可以消費到這條訊息。

副本的leader選舉

kafka提供了資料複製演算法保證,如果leader副本所在的broker節點宕機或者出現故障,或者分割槽的leader節點發生故障,這個時候怎麼處理呢?那麼,kafka必須要保證從follower副本中選擇乙個新的leader副本。那麼kafka是如何實現選舉的呢?要了解leader選舉,我們需要...

Zookeeper系列 Leader選舉

為了徹底搞懂zk選舉leader的過程,需要在windows本地搭建乙個偽集群出來,通過實際操作,觀察集群的節點的變化。但是在實操過程中,發現windows搭建的一些坑,這記錄下。1.參考此部落格進行搭建,2.依次啟動,啟動後,無法使用zkserver.cmd status命令,無法觀察哪乙個節點是...

Zookeeper學習 Leader選舉

leader選舉是zookeeper最重要的技術之一,也是保證分布式資料一致性的關鍵所在。當zookeeper集群中的一台伺服器出現以下兩種情況之一時,需要進入leader選舉。若進行leader選舉,則至少需要兩台機器,這裡選取3臺機器組成的伺服器集群為例。在集群初始化階段,當有一台伺服器serv...