Apache Kafka中Follower如何与Leader同步数据

Kafka【十】副本(follower)从领导者(leader)同步数据的流程 Kafka中,分区的某个副本会被指定为 Leader,负责响应客户端的读写请求。分区中的其他副本自动成为 Follower,主动拉取(同步)Leader 副本中的数据,写入自己本地日志,确保所有副本上的数据是一致的。Kafka创建主题时,会根据副本分配策略向指定的Broker节点发出请求,将不同的副本节点设定为Leader或Follower。 阅读详情

重要名词解释: 

log end offset (logEndOffset),表示log中最后的message的offst位置.
high watermark (HW),表示Partition各个replicas数据间同步且一致的offset位置,即表示allreplicas已经commit位置,每个Broker缓存中维护此信息,并不断更新。

Kafka中replication复制数据

Kafka的复制机制既不是完全的同步复制,也不是单纯的异步复制。完全同步复制要求All Alive Follower都复制完,这条消息才会被认为commit,这种复制方式极大的影响了吞吐率。而异步复制方式下,Follower异步的从Leader复制数据,数据只要被Leader写入log就被认为已经commit,这种情况下如果Follower都复制完都落后于Leader,而如果Leader突然宕机,则会丢失数据。而Kafka的这种使用ISR的方式则很好的均衡了确保数据不丢失以及吞吐率。Follower可以批量的从Leader复制数据,而且Leader充分利用磁盘顺序读以及send file(zero copy)机制,这样极大的提高复制性能,内部批量写磁盘,大幅减少了Follower与Leader的消息量差。


优点

  • 性能高,吞吐量大。
  • 降低了系统和磁盘开销,Leader充分利用磁盘顺序读以及send file(zero copy)机制。
  • 降低Leader与Follower之间网络开销和交互次数。

缺点

  • 有可能会占用大量网络带宽(例如本来集群很大而且数据量很多,后来新增Broker节点需要迁移数据),甚至堵塞网络,需要有流控机制,否则会影响线上服务。
  • 因为Follower是批量拉取Leader消息,如果设置为保证所有replicas commit,才返回Ack给生产者会存在抖动现象,Follow拉取Leader修改HW,当HW与当次生产者请求logEndOffset的offst一致时,客户端等待时间会拉长。

kafka集群副本分布原理分析

Kafka中partition replication之间同步数据,从partition的leader复制数据到follower只需要一个线程(ReplicaFetcherThread),实际上复制是follower(一个follower相当于consumer)主动从leader批量拉取消息的,这极大提高了吞吐量,从中可以看出无处不显示Kafka高吞吐量设计思想。

Kafka中partition replica复制机制:

Kafka中每个Broker启动时都会创建一个副本管理服务(ReplicaManager),该服务负责维护ReplicaFetcherThread与其他Broker链路连接关系,该Broker中存在多少Follower的partitions对应leader partitions分布在不同的Broker上,有多少Broker就会创建相同数量的ReplicaFetcherThread线程同步对应partition数据,Kafka中partition间复制数据是由follower(扮演consumer角色)主动向leader获取消息,follower每次读取消息都会更新HW状态。每当Follower的partitions发生变更影响leader所在Broker变化时,ReplicaManager就会新建或销毁相应的ReplicaFetcherThread。
 

Kafka Broker中follower partition与ReplicaFetcherThread对应关系

partition三副本情况:

partition两副本情况:

Kafka中partitions数据一致性:

Kafka中Producer发送消息到Broker,Broker有三种返回方式,分别为noack、leader commit成功就ack、leader和follower同时commit成功才返回ack。第三种方式是数据强一致性。

如何保证数据强一致性?

当Producer发送消息到leader partition所在Broker时,首先保证leader commit消息成功,然后创建一个“生产者延迟请求任务”,并判断当前partiton的HW是否大于等于logEndOffset,如果满足条件即表示本次Producer请求partition replicas之间数据已经一致,立即向Producer返回Ack。否则待Follower批量拉取Leader的partition消息时,同时更新Leader ISR中HW,然后检查是否满足上述条件,如果满足向Producer返回Ack。
 

kafka集群是如何选择leader,你知道吗? Kafka集群的分区多副本架构是 Kafka 可靠性保证的核心,把消息写入多个副本可以使 Kafka 在发生崩溃时仍能保证消息的持久性。本文围绕这样的核心架构讲解了其中的一些核心机制,包括Leader的选举、消息的存储机制等等。 阅读详情

相关推荐

kafka的分区的leader和follower

在kafka中,每个topic都可以配置多个分区以及多个副本。每个分区都有一个leader以及0个或者多个follower,在创建topic的时,kafka会将每个分区的leader均匀的分配在每个broker上。我们正常使用kafka是感觉不到leader,follower的存在的。但其实,所有的读写操作都是由leader处理,而所有的follower都复制leader的日志数据文件,如果leader出现故障时,follower就会被选举为leader。所以,可以这样说: kafka中的leader负责处

科学的N次方 5892

取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据

一、场景分析Kafka采用的是主写主读的方式,即客户端的读写请求都由分区的Leader副本处理,那么Follower副本要想保证和Leader副本数据一致,就需要不断地从Leader副本拉取消息来进行同步。由于同一个分区的Leader副本和Follower副本分布在不同的节点上,所以同步的过程可以简单概括为:Follower副本所在节点封装拉取数据的请求并发送给Leade...

weixin_39835792的博客 1088

Kafka的复制与一致性保证

Kafka的复制与一致性保证 1.背景介绍 Apache Kafka是一个分布式流处理平台,被广泛应用于大数据领域。它能够以高吞吐量、低延迟的方式持久化和处理大量数据流。Kafka的核心设计思想是将消息持久化到磁盘,并通过复制分布在多个服务器上以实现容错。 Kafka集群中的每个服

AI天才研究院 374

Kafka的ISR概念及Leader和follower数据同步机制

1.Replica kafka的broker端每个partition都会有多个副本(replica),至少有一个leader领导者副本以及多个follower追随者副本(可配置),分区接收消息以及消费消息都会在leader中进行,而follower副本的作用就是备份leader中的消息,它们会定时的从leader中拉取最新数据,从而尽可能的保证和leader的同步。 1.什么是ISR? 分区中的所有副本统称为AR(Assigned Replicas)。所有与leader副本保持一定程度同步的副本(包括lea

Cc的博客 4917

《双剑合璧:双 IMU 驱动的高精度 AHRS 实战宝典(基于 ROS2)》

本文系统阐述了基于双IMU的高精度姿态与航向参考系统(AHRS)设计与实现方法。文章首先分析了传统单IMU系统的局限性,提出通过双IMU冗余配置实现性能互补的方案。从硬件设计要点(包括IMU选型策略、电路降噪方法、PCB布局规范),到算法实现方案(互补滤波、卡尔曼滤波等融合算法),再到ROS2软件架构与调优策略,全方位展示了双IMU系统的技术实现路径。特别强调快速性与高精度平衡的方法,包括动态参数调整、双IMU权重优化等核心技巧。最后总结了硬件降噪、算法调优等实用心法。

bother3000的博客 2024

图像处理(12)--图像各种噪声及消除方法

文章目录结构1.什么是图像噪声2. 图像噪声来源3. 噪声分类及其消除方法3.1 高斯噪声及其消除方式3.1.1 如何确定一种噪声是高斯噪声3.1.2 高斯滤波消除高斯噪声3.1.3 高斯函数的重要性质3.2 瑞利噪声及其消除方式3.3 伽马(爱尔兰)噪声及其消除方式3.4 指数分布噪声及其消除方式3.5 均匀噪声及其消除方式3.6 脉冲(椒盐)噪声及其消除方式 1.什么是图像噪声 图像噪声是指...

ShaneHolmes 11万+

Kafka ISR同步副本集合

ISR 在 Apache Kafka 中代表,即同步副本集合。这是 Kafka 中一个非常重要的概念,用于保证消息的高可用性和数据一致性。

qq_74980411的博客 1254

长上下文技术的底层逻辑:Attention、压缩、缓存与跨页推理

如果把模型的参数视为“固化智能”,动态智能(Dynamic Intelligence)——模型不必依赖训练时的记忆,而是可以随时调用外部信息。这一点正在改变大模型的范式:Prompt 不再是输入,而是“操作系统事件”文档不再是知识,而是“模型的临时记忆”模型不再是一段神经网络,而是一个“具备阅读循环的推理引擎”当我们把上下文从 128K 拉到百万级,我们做的不是扩容,而是让模型第一次拥有阅读、回溯、定位、跨页分析的能力。这是一种新的智能。

aifs2025的博客 997

【分布式微服务云原生】5分钟深入剖析Kafka:Leader与Follower分区的秘密及负载均衡的艺术

在这篇博文中,我们将深入探讨Apache Kafka的分区机制,特别是Leader分区和Follower分区的区别,以及Kafka如何通过消费者组实现消息消费的负载均衡。文章将提供清晰的结构、流程图、代码示例和表格,帮助读者理解Kafka的内部工作机制。文章结尾将提供一个Excel表格总结,确保读者能够全面掌握Kafka的关键概念。

Dylaniou的博客 1423

Halcon与C#联合编程(一):使用S7协议实现机器视觉上位机与西门子PLC联动

本项目技术栈:C#基础,多线程,Halcon DirectShow,Halcon形状检测,Halcon QR码识别,西门子S7通讯协议,西门子PLC为核心的下位机及执行元件

虎鲸不是鱼 1万+

SAP GR(Group Reporting)配置篇(五)

1.5、合并的货币换算1.5.1指定折算比率菜单路径组报表的SAP S4HANA >合并的货币换算>-指定折算汇率事务代码GCRF说 明1.5.2维护汇率菜单路径组报表的SAP S4HANA >合并的货币换算>维护汇率事务代码CXCC/OB08说 明实际测试的时候根据实际情况维护汇率。输入换算比率。1.5.3定义汇率标识符菜单路径组报表的SAP S4HANA >合并的货币换算>定义汇率标识符事务代码OC41说 明配置了月末汇率和平均汇率。

weixin_43853754的博客 554

Kafka副本同步机制理解

原文地址:https://blog.youkuaiyun.com/lizhitao/article/details/51718185   Apache Kafka的流行归功于它设计和操作简单、存储系统高效、充分利用磁盘顺序读写等特性、非常适合在线日志收集等高吞吐场景。 Apache Kafka特性之一是它的复制协议。对于单个集群中每个Broker不同工作负载情况下,如何自动调优Kafka副本的工作方式是...

u010020099的专栏 365

AI人工智能领域多模态数据融合在智能诊断系统的应用案例

在医疗诊断领域,单一模态数据(如CT影像或电子病历)的局限性日益凸显——就像老中医只"望"不"闻"会漏掉关键线索。本文将深入解析多模态数据融合技术如何突破这一瓶颈:从生活化的"中医四诊"类比切入,拆解数据层/特征层/决策层融合的技术原理;结合肺癌智能诊断的真实案例,展示CT影像、病理文本、基因数据、生命体征的多模态融合全流程;最后探讨技术落地的核心挑战与未来方向。无论你是医疗从业者、AI开发者,还是对智能诊断感兴趣的爱好者,都能从中获得技术启发与应用思路。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 832

从零学习Kafka:集群架构和基本概念

最后再多提一点,Kafka Broker 是使用 Log 保存数据,Log 底层又分成了多个 Log Segment,消息在 Log Segment 上只能追加写入,当一个 Log Segment 写满后,就会创建新的 Log Segment 继续写入。流量缓冲是 Kafka 的应用场景之一,在上面的例子中,当系统 A 有很大的突增流量时,如果直接对接系统 B,那么瞬时流量很有可能直接把系统 B 打挂。这个问题每个人可能会有不同的答案,对我而言,使用 Kafka 最主要的原因是做流量缓冲和数据同步。

HF9yFbLZ7的博客 320

c#【保姆级教程】基于System.Text.Json 支持多态类型序列化! 手把手教你实现一个通用的 PolymorphicJsonConverter!

我们需要自己实现一个继承自的转换器,在序列化时记录具体类型,在反序列化时根据类型标识还原成正确的子类对象。public abstract class WorkStepBase { /* 抽象方法等 */ }public class Person : WorkStepBase { /* 实现 */ }public class Product : WorkStepBase { /* 实现 */ }特性说明✅ 自动发现子类无需手动维护类型列表,自动扫描程序集✅ 类名映射。

一个编程的同学 425

【Dify】36氪新闻热榜智能自动化采集与AI处理

本文介绍如何利用Dify等自动化工具实现36氪新闻热榜的智能采集与处理。通过HTTP请求节点获取数据,JSON解析节点结构化处理,AI处理节点生成智能摘要,最终格式化输出结果。工作流程包含数据获取、解析、AI摘要、文本整理和内容输出五个环节,支持批量化、定制化的新闻处理需求。该方案适用于行业监测、内容创作、舆情管理等场景,显著提升信息获取效率,实现"所需即得"的自动化新闻服务。系统采用OpenAI GPT和Dify API作为核心模型,无需复杂人工干预即可完成全流程处理。

Mr数据杨 599

消息队列-kafka(一)

摘要:Kafka是一种分布式消息队列系统,具有解耦、缓冲、异步通信等特点。其架构包含生产者、消费者、Broker集群、Topic和Partition等核心组件,通过分区和副本机制实现高可用和负载均衡。Kafka支持多种分区策略(轮询、随机、键值等)和消费者组机制,灵活适应点对点和发布/订阅模型。分区分配策略(如Range、RoundRobin等)确保消息均匀分布。Kafka依赖Zookeeper进行元数据管理和故障恢复,适用于大数据处理和实时数据分析场景。(150字)

冷崖的博客 1258

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Kafka replication

Kafka replication kafka_replication_detailed_design_v2.pdf kafka Detailed Replication Design V3 Apache Kafka中Follower如何从Leader fetch消息 Kafka深度解析,众人推荐,精彩好文! Kafka 的集群复制设计 Kafka的Log存储解析 KIP-1 - Rem...

weixin_30275415的博客 168

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Kafka在大数据领域的数据备份与恢复

在大数据时代,数据如同石油一样珍贵。Kafka作为一款流行的分布式消息队列,承担着海量数据的传输与处理。本文旨在深入剖析Kafka如何在大数据领域实现数据备份与恢复,帮助读者全面理解并掌握相关技术。范围涵盖Kafka数据备份与恢复的原理、操作步骤、实际应用等多个方面。首先引入核心概念,解释Kafka相关术语,用故事和比喻讲解数据备份与恢复的核心概念及关系,并给出原理和架构示意图。接着介绍核心算法原理和具体操作步骤,通过代码示例详细阐述。随后列举实际应用场景,推荐相关工具资源,探讨未来趋势与挑战。

2502_91592937的博客 409

一文彻底搞清 Kafka 的副本复制机制

也可以到过往记忆大数据博客阅读(点击下面阅读原文即可) https://www.iteblog.com/archives/2556.html让分布式系统的操作变得简单,在某种程度上是一种...

过往记忆大数据 743
上一篇: Apache Kafka消息传递可靠性分析
下一篇: Kafka Broker HA机制
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值