「Kafka应用」副本同步策略

副本同步策略

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

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

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

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

同步过程图示

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

image

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

image

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

image

4. follower1、follower2均同步完成

image

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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