Kafka_Kafka 中 zookeeper 具體是做什麼的?

 

參考文章

1.kafka 中 zookeeper 具體是做什麼的?

 https://www.cnblogs.com/yogoup/p/12000545.html

 

 最近回顧了下 kafka 的相關部分的知識,既然 kafka 並不是依賴於 zookeeper 進行 AR 進行 Topic 的Leader選舉的,那麼 zookeeper 到底完成了那些工作呢 ?

 zookeeper 是 kafka 不可分割的一部分,可見其重要程度,所以我們有必要了解一下 zookeeper 在 kafka 中的具體工作內容。

 zookeeper 存儲了一些關於 consumer 和 broker 的信息,那麼就從這兩方面說明 zookeeper 的作用。

 

 broker

 

  • 狀態

zookeeper 記錄了所有 broker 的存活狀態,broker 會向 zookeeper 發送心跳請求來上報自己的狀態。

zookeeper 維護了一個正在運行並且屬於集羣的 broker 列表。

 

  • 控制器選舉

kafka 集羣中有多個 broker,其中有一個會被選舉爲控制器。

控制器負責管理整個集羣所有分區和副本的狀態,例如某個分區的 leader 故障了,控制器會選舉新的 leader。

從多個 broker 中選出控制器,這個工作就是 zookeeper 負責的。

 

  • 限額權限

kafka 允許一些 client 有不同的生產和消費的限額。

這些限額配置信息是保存在 zookeeper 裏面的。

所有 topic 的訪問控制信息也是由 zookeeper 維護的。

 

  • 記錄 ISR

ISR(in-sync replica) 是 partition 的一組同步集合,就是所有 follower 裏面同步最積極的那部分。

一條消息只有被 ISR 中的成員都接收到,才被視爲“已同步”狀態。

只有處於 ISR 集合中的副本纔有資格被選舉爲 leader。

zookeeper 記錄着 ISR 的信息,而且是實時更新的,只要發現其中有成員不正常,馬上移除。

 

  • node 和 topic 註冊

zookeeper 保存了所有 node 和 topic 的註冊信息,可以方便的找到每個 broker 持有哪些 topic。

node 和 topic 在 zookeeper 中是以臨時節點的形式存在的,只要與 zookeeper 的 session 一關閉,他們的信息就沒有了。

 

  • topic 配置

zookeeper 保存了 topic 相關配置,例如 topic 列表、每個 topic 的 partition 數量、副本的位置等等。

 

 

 consumer

 

  • offset

kafka 老版本中,consumer 的消費偏移量是默認存儲在 zookeeper 中的。

新版本中,這個工作由 kafka 自己做了,kafka 專門做了一個 offset manager。

 

  • 註冊

和 broker 一樣,consumer 也需要註冊。

consumer 會自動註冊,註冊的方式也是創建一個臨時節點,consumer down 了之後就會自動銷燬。

 

  • 分區註冊

kafka 的每個 partition 只能被消費組中的一個 consumer 消費,kafka 必須知道所有 partition 與 consumer 的關係。

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