「Kafka應用」副本同步策略

ligkwww發表於2021-01-03

副本同步策略

當分割槽擁有多個副本時,其中follower副本會從leader副本中對資料進行同步,而只有當資料同步完成後,消費者才可以訪問到,所以這裡採用的是逐步遞增的方法,即對同一批資料中每一條資料的更新進行監控,最後通過HW+LEO來確定當前同步的位置。

在同步過程中,每一個follower都會維護自己的LEO,那麼在所有副本(ISR)中最低的LEO就是當前分割槽的HW。這樣當所有副本每同步完一條資料,消費者就可以多獲取到一條資料。不用等待所有資料都同步完成才能獲取。

這樣做介於同步和非同步之間,在保證資料完整性的同時,也保證了效率。不必等所有分割槽全部同步完資料才可以訪問,也不必像非同步一樣傳送資料之後都算做已同步。

這種方式根據副本最低同步數來決定整個分割槽的資料。好處就是在同步大量資料時,同步過程中也可以逐步遞增副本資料。否則按照同步方式,則需要等待所有資料都同步完成後,才可以被消費者訪問。

同步過程圖示

1. 初始狀態,所有副本狀態保持一致

image

2. leader寫入新資料,準備同步

image

3. follower1同步完成,follower2同步未完成

image

4. follower1、follower2均同步完成

image

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章