「Kafka应用」副本同步策略

副本同步策略

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

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

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

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

同步过程图示

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

image

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

image

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

image

4. follower1、follower2均同步完成

image

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

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