尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

kafka的ISR机制

kafka的ISR机制
📅 发布时间:2026/6/20 16:48:00

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

相关新闻

  • 快速了解Linux中的lsmod命令
  • Windows Server 2022 桌面体验版采用Deployment Center 安装TeamCenter 2506 (上)
  • 2025 最新废气焚烧炉厂家推荐排行榜:聚焦化工医药农药行业,甄选技术创新与合规适配优质企业化工废气焚烧炉/农药废气焚烧炉/医药废气焚烧炉/RTO 废气焚烧炉公司推荐

最新新闻

  • 2026 年宜春市厨卫屋顶防水修缮三家横向测评:吉修匠 99.8 分稳居榜首 - 吉修匠
  • 免安装去水印方法,微信里打开就能用 - 工具软件使用方法推荐
  • 佛山精装房改造售后服务哪家好?2026年本地服务品牌推荐 - 优家闲谈
  • 手机电脑端图片去水印工具推荐,高清无损保留原画质 - 工具软件使用方法推荐
  • 微信小程序一键去水印,保存高清视频素材就这么简单 - 爱上科技热点
  • 注销公告登报怎么线上办理?2026这样简单又省心 - 资讯速览

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号