Apache Kafka-核心組件和流程-副本管理器-設計-原理(入門教程輕鬆學)

本入門教程,涵蓋Kafka核心內容,通過實例和大量圖表,幫助學習者理解,任何問題歡迎留言。

目錄:

本章簡單介紹了副本管理器,副本管理器負責分區及其副本的管理。副本管理器具體的工作流程可以參考牟大恩所著的《Kafka入門與實踐》。

副本管理器

副本機制使得kafka整個集羣中,只要有一個代理存活,就可以保證集羣正常運行。這大大提高了Kafka的可靠性和穩定性。

Kafka中代理的存活,需要滿足以下兩個條件:

  1. 存活的節點要維持和zookeeper的session連接,通過zookeeper的心跳機制實現
  2. Follower副本要與leader副本保持同步,不能落後太多。

滿足以上條件的節點在ISR中,一旦宕機,或者中斷時間太長,Leader就會把同步副本從ISR中踢出。

所有節點中,leader節點負責接收客戶端的讀寫操作,follower節點從leader複製數據。

副本管理器負責對副本管理。由於副本是分區的副本,所以對副本的管理體現在對分區的管理。

在第三章已經對分區和副本有了詳細的講解,這裏再介紹兩個重要的概念,LEO和HW。

  1. LEO是Log End Offset縮寫。表示每個分區副本的最後一條消息的位置,也就是說每個副本都有LEO。
  2. HW是Hight Watermark縮寫,他是一個分區所有副本中,最小的那個LEO。

看下圖:

分區test-0有三個副本,每個副本的LEO就是自己最後一條消息的offset。可以看到最小的LEO是Replica2的,等於3,也就是說HW=3。這代表offset=4的消息還沒有被所有副本複製,是無法被消費的。而offset<=3的數據已經被所有副本複製,是可以被消費的。

 

副本管理器所承擔的職責如下:

  1. 副本過期檢查
  2. 追加消息
  3. 拉取消息
  4. 副本同步過程
  5. 副本角色轉換
  6. 關閉副本

再此就不再一一講解了,詳情可以參考牟大恩所著的《Kafka入門與實踐》。

下一步:開始kafka編程實戰的學習