「Kafka应用」副本同步策略

副本同步策略

当分区拥有多个副本时,其中follower副本会从leader副本中对数据进行同步,而只有当数据同步完成后,消费者才可以访问到,所以这里采用的是逐步递增的方法,即对同一批数据中每一条数据的更新进行监控,最后通过HW+LEO来确定当前同步的位置。

在同步过程中,每一个follower都会维护自己的LEO,那么在所有副本(ISR)中最低的LEO就是当前分区的HW。这样当所有副本每同步完一条数据,消费者就可以多获取到一条数据。不用等待所有数据都同步完成才能获取。

这样做介于同步和异步之间,在保证数据完整性的同时,也保证了效率。不必等所有分区全部同步完数据才可以访问,也不必像异步一样发送数据之后都算做已同步。

这种方式根据副本最低同步数来决定整个分区的数据。好处就是在同步大量数据时,同步过程中也可以逐步递增副本数据。否则按照同步方式,则需要等待所有数据都同步完成后,才可以被消费者访问。

同步过程图示

1. 初始状态,所有副本状态保持一致

image

2. leader写入新数据,准备同步

image

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

image

4. follower1、follower2均同步完成

image

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!