Apache Kafka入門教程輕鬆學-第四章 Kafka核心元件和流程-設計-原理(四)副本管理器
阿新 • • 發佈:2018-12-14
本入門教程,涵蓋Kafka核心內容,通過例項和大量圖表,幫助學習者理解,任何問題歡迎留言。
目錄:
本章簡單介紹了副本管理器,副本管理器負責分割槽及其副本的管理。副本管理器具體的工作流程可以參考牟大恩所著的《Kafka入門與實踐》。
副本管理器
副本機制使得kafka整個叢集中,只要有一個代理存活,就可以保證叢集正常執行。這大大提高了Kafka的可靠性和穩定性。
Kafka中代理的存活,需要滿足以下兩個條件:
- 存活的節點要維持和zookeeper的session連線,通過zookeeper的心跳機制實現
- Follower副本要與leader副本保持同步,不能落後太多。
滿足以上條件的節點在ISR中,一旦宕機,或者中斷時間太長,Leader就會把同步副本從ISR中踢出。
所有節點中,leader節點負責接收客戶端的讀寫操作,follower節點從leader複製資料。
副本管理器負責對副本管理。由於副本是分割槽的副本,所以對副本的管理體現在對分割槽的管理。
在第三章已經對分割槽和副本有了詳細的講解,這裡再介紹兩個重要的概念,LEO和HW。
- LEO是Log End Offset縮寫。表示每個分割槽副本的最後一條訊息的位置,也就是說每個副本都有LEO。
- HW是Hight Watermark縮寫,他是一個分割槽所有副本中,最小的那個LEO。
看下圖:
分割槽test-0有三個副本,每個副本的LEO就是自己最後一條訊息的offset。可以看到最小的LEO是Replica2的,等於3,也就是說HW=3。這代表offset=4的訊息還沒有被所有副本複製,是無法被消費的。而offset<=3的資料已經被所有副本複製,是可以被消費的。
副本管理器所承擔的職責如下:
- 副本過期檢查
- 追加訊息
- 拉取訊息
- 副本同步過程
- 副本角色轉換
- 關閉副本
再此就不再一一講解了,詳情可以參考牟大恩所著的《Kafka入門與實踐》。