当前位置: 首页 > news >正文

kafka的ISR机制

ISR 的工作机制

ISR 机制的全称是:

In-Sync Replicas
(同步副本集/同步副本机制)

1. 进入 ISR

当一个追随者副本启动时,它会开始从领导者副本拉取消息。如果它能够持续地、及时地追上领导者的最新数据(即 LEO - Log End Offset),它就会被领导者认为是“同步的”,并维持在 ISR 列表中。

2. 脱离 ISR(核心机制)

如果某个追随者副本落后了,比如因为网络问题、机器负载过高、GC 停顿等导致它长时间没有从领导者拉取数据,它就会被领导者从 ISR 集合中移除。

判断一个副本是否“失步”的标准,在旧版本中是基于延迟的消息数,现在主要是基于时间参数:

  • replica.lag.time.max.ms(默认 30秒):如果一个追随者副本在此时间内没有向领导者发起获取数据的请求(如 FetchRequest),或者它的数据落后领导者超过这个时间阈值,领导者就会将其从 ISR 中踢出。

3. 重新回到 ISR

被踢出 ISR 的副本并不会停止工作,它仍然会继续尝试从领导者拉取数据。当这个“落后”的副本重新追上了领导者的最新进度(即它的 LEO 与领导者的 LEO 相差在允许的范围内),领导者会将它重新加入 ISR 集合。


ISR 的核心作用

1. 在可用性和一致性之间取得平衡

如果没有 ISR,为了保证数据一致性,每次写入可能都需要所有副本确认,但只要有一个副本缓慢或宕机,整个系统就会不可用或变得极慢。
有了 ISR,Kafka 只需要关注那些健康的、同步的副本。只要 ISR 中至少有一个副本存活,分区就是可用的。

2. 实现“至少一次”语义的基石

当生产者配置 acks=all 时,它实际上是在等待 ISR 中的所有副本 都确认收到消息后,才认为发送成功。这确保了只要 ISR 中有一个副本存活,成功写入的消息就不会丢失。

3. 领导者选举

当分区的领导者副本发生故障时,Kafka 不会从所有副本中随意选择一个作为新领导者,而是优先从 ISR 集合中选举一个新的领导者。

  • 为什么? 因为 ISR 中的副本都拥有最新的数据,从它们中选出的新领导者能保证数据不丢失,维持数据的一致性。


工作机制图解

假设一个分区有 3 个副本:Leader (L), Follower1 (F1, ISR), Follower2 (F2, ISR)。

  1. 正常状态:

    • L, F1, F2 都在 ISR 中。

    • 生产者发送消息,L 和 F1 很快写入,但 F2 因网络问题开始变慢。

  2. Follower 失步:

    • F2 的延迟超过了 replica.lag.time.max.ms(例如 30秒)。

    • 领导者 L 将 F2 从 ISR 中移除。当前 ISR = [L, F1]。

  3. 生产者写入:

    • 生产者配置了 acks=all,它只需要等待 ISR ([L, F1]) 中的所有副本确认即可,无需等待缓慢的 F2。这保证了写入性能和可用性。

  4. Follower 恢复:

    • F2 的网络恢复,并快速追上了领导者的最新数据。

    • 领导者 L 检测到 F2 已同步,将其重新加入 ISR。当前 ISR = [L, F1, F2]。

  5. 领导者故障:

    • 假设 Leader (L) 宕机。

    • Kafka 控制器会从当前的 ISR ([F1, F2]) 中选举一个新的领导者(比如 F1)。由于 F1 和 F2 数据都是最新的,这个切换过程不会造成数据丢失。


关键配置参数

  • replica.lag.time.max.ms:决定追随者副本是否“失步”的关键时间阈值。默认 30000ms (30秒)。

  • min.insync.replicas:非常重要的参数。它定义了生产者设置 acks=all 时,所必需的最小 ISR 数量。

    • 例如,如果你设置 min.insync.replicas=2,那么当 ISR 中的副本数少于 2 个时(比如只剩下领导者自己),生产者写入会失败(抛出 NotEnoughReplicasException)。这是一个可用性和可靠性的权衡:你宁愿让服务不可用,也不接受数据可能丢失的风险。

总结

ISR 机制是 Kafka 设计精妙之处的一个完美体现。它通过动态维护一个“健康副本池”,巧妙地解决了分布式系统中数据同步、故障恢复和高可用性之间的矛盾。它不仅是数据一致性的保障,也是高性能写入和高可用性选举的基础。

http://www.jsqmd.com/news/50495/

相关文章:

  • 2025年11月成都律师事务所推荐榜单:主流机构列表与专业服务解析
  • 2025 最新外包公司平台口碑最新推荐榜:权威测评认证的优质服务商,助力企业高效解决用工难题杭州/金华/衢州/温州/台州/绍兴/湖州外包公司推荐
  • 【隐语Secretflow】轻量级隐私计算任务编排框架Kuscia架构解析
  • 快速了解Linux中的lsmod命令
  • 2025年专业的GEO优化实力厂家找哪家,GEO优化杭州服务商推荐TOP5,覆盖多行业需求
  • iOS 混淆应用链实战 多专业的工具组合搞定 IPA 混淆与加固(iOS混淆|IPA加固|无源码加固|App 防反编译)
  • Windows Server 2022 桌面体验版采用Deployment Center 安装TeamCenter 2506 (上)
  • 完整教程:跨厂商(华为 H3C)防火墙 IPSec 隧道部署
  • 2025 最新废气焚烧炉厂家推荐排行榜:聚焦化工医药农药行业,甄选技术创新与合规适配优质企业化工废气焚烧炉/农药废气焚烧炉/医药废气焚烧炉/RTO 废气焚烧炉公司推荐
  • 2025年行业内复购率高的真空包装袋批发厂家口碑推荐榜,真空包装袋推荐排行榜单精选综合实力TOP企业
  • kafka 的ack机制
  • 窗体关闭事件
  • AcWing 788:逆序对的数量 ← 树状数组 + 离散化(数组 + sort + STL map)
  • AI 数据分析如何保障准确性?Aloudata Agent 构建可信数据基础
  • MWD脉冲器电路关键技术与挑战
  • 2025年广东早恋教育机构权威推荐榜单:素质教育/打架/厌学源头机构精选
  • tignerVNC
  • 麒麟系统V10SP1更新到指定内核方法
  • 深入解析:英集芯 IP5326 集成Type-C协议的2.4A充放电移动电源SOC
  • 视频汇聚平台EasyCVR打造阳光药房远程可视化智慧监管体系
  • 2025厦门口碑好的留学中介有哪些
  • 2025年河北大口径胶管权威推荐榜单:河北大口径抽沙胶管/河北大口径吸沙胶管/河北喷砂吸排法兰胶管源头厂家精选
  • 2025广州权威的留学机构排名榜
  • DeerFlow源码分析
  • 2025北京留学机构前十名有哪些
  • 2025年北京回收二手红木家具公司权威推荐榜单:回收红木家具高价/回收阔叶黄檀家具/回收缅甸花梨家具源头公司精选
  • 2025澳大利亚研究生留学中介哪个好
  • 视频融合平台EasyCVR助力城市渣土车管理,打造智能联网监控方案
  • 服务器远程连接不上怎么回事?怎么解决?
  • 多位