Kafka——Controller、Rebalance、HW的基礎概念

Kafka——Controller、Rebalance、HW

1. Controller

  • Kafka集羣中的broker在zk中創建臨時序號節點,序號最小的節點(最先創建的節點)將作爲集羣的controller,負責管理整個集羣中的所有分區和副本的狀態:
    • 當某個分區的leader副本出現故障時,由控制器負責爲該分區選舉新的leader副本。
    • 當檢測到某個分區的ISR集合發生變化時,由控制器負責通知所有broker更新其元數據信息。
    • 當使用kafka-topics.sh腳本爲某個topic增加分區數量時,同樣還是由控制器負責讓新分區被其他節點感知到。

2. Rebalance

前提:消費者沒有指明分區消費。當消費組裏消費者和分區的關係發生變化,那麼就會觸發rebalance機制。

​ 這個機制會重新調整消費者消費哪個分區。

在觸發rebalance機制之前,消費者消費哪個分區有三種策略

  • range:通過公示來計算某個消費者消費哪個分區
  • 輪詢:大家輪着消費
  • sticky:在觸發了rebalance後,在消費者消費的原分區不變的基礎上進行調整。

3. HW與LEO

HW俗稱高水位:HighWatermark的縮寫,取一個partition對應的ISR中最小的LEO(log-end-offset)作爲HW,consumer最多隻能消費到HW所在的位置。

另外每個replica都有HW,leader和follower各自負責更新自己的HW的狀態。

對於leader新寫入的消息,consumer不能立刻消費,leader會等待該消息被所有ISR中的replicas同步後更新HW,此時消息才能被consumer消費。

這樣就保證瞭如果leader所在的broker失效,該消息仍然可以從新選舉的leader中獲取。

LEO:是某個副本最後消息的位置(log-end-offset)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章