副本的leader选举
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选举的全部內容,希望文章能夠幫你解決所遇到的問題。