1. 程式人生 > >Apache Kafka入門教程輕鬆學-第四章 Kafka核心元件和流程-設計-原理(四)副本管理器

Apache Kafka入門教程輕鬆學-第四章 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入門與實踐》。