「Kafka应用」副本同步策略
副本同步策略
当分区拥有多个副本时,其中follower副本会从leader副本中对数据进行同步,而只有当数据同步完成后,消费者才可以访问到,所以这里采用的是逐步递增的方法,即对同一批数据中每一条数据的更新进行监控,最后通过HW+LEO来确定当前同步的位置。
在同步过程中,每一个follower都会维护自己的LEO,那么在所有副本(ISR)中最低的LEO就是当前分区的HW。这样当所有副本每同步完一条数据,消费者就可以多获取到一条数据。不用等待所有数据都同步完成才能获取。
这样做介于同步和异步之间,在保证数据完整性的同时,也保证了效率。不必等所有分区全部同步完数据才可以访问,也不必像异步一样发送数据之后都算做已同步。
这种方式根据副本最低同步数来决定整个分区的数据。好处就是在同步大量数据时,同步过程中也可以逐步递增副本数据。否则按照同步方式,则需要等待所有数据都同步完成后,才可以被消费者访问。
同步过程图示
1. 初始状态,所有副本状态保持一致
2. leader写入新数据,准备同步
3. follower1同步完成,follower2同步未完成
4. follower1、follower2均同步完成
本作品采用《CC 协议》,转载必须注明作者和本文链接