Kafka 的 ISR 是什么

Kafka 的 ISR 是什么?(超清晰版)

ISR = In-Sync Replicas

中文叫:同步副本集合

它是 Kafka 保证消息不丢失、高可用的核心机制。


1. 先搞清楚角色

一个 Partition 一定有:

  • Leader 副本:负责读写
  • Follower 副本:只同步数据,不对外提供服务
  • ISR :当前跟 Leader 保持同步的 Follower 集合(Leader 自己也在 ISR 里)

2. ISR 到底是什么?

ISR 是一个动态列表,里面包含:

  • Leader
  • 所有同步速度足够快、没有掉队的 Follower

满足两个条件才会在 ISR 里:

  1. Follower 与 Leader 网络连接正常
  2. Follower 同步的消息落后 Leader 不超过阈值
    默认:replica.lag.time.max.ms = 10000ms(10秒)

只要 Follower 在 10s 内没跟上,就会被踢出 ISR


3. ISR 有什么用?(核心作用)

① 保证消息不丢失

生产者 acks=-1/all 时:

消息必须被 ISR 中所有副本都写入成功,才返回成功。

这样即使 Leader 挂了,ISR 里一定有完整数据,不会丢消息。

② 选举新 Leader 只能从 ISR 里选

Kafka 有一条铁律:

新 Leader 必须从 ISR 中选举

不在 ISR 里的 Follower 数据是残缺的,绝对不能当 Leader,否则会丢数据。


4. 什么副本会被踢出 ISR?

  • 挂掉的 Follower
  • 网络卡顿、GC 停顿、同步太慢
  • 落后 Leader 超过 replica.lag.time.max.ms

踢出后,它就变成 OSR(Out-of-Sync Replicas)

恢复正常后,会重新追上 Leader,自动加回 ISR


5. 最小 ISR 机制(防脑裂、防丢数据)

配置:min.insync.replicas=2

含义:

  • ISR 里至少要有 2 个副本(Leader + 1 Follower)
  • 否则写入会直接失败,避免只有 Leader 一个人在 ISR 里,一旦挂掉就彻底丢数据。

6. 一句话总结 ISR

ISR = 跟 Leader 数据一致、同步正常的副本集合。
只有 ISR 里的副本才能被选为 Leader,只有 ISR 确认写入才算安全写入。


相关推荐
gQ85v10Db11 小时前
Redis分布式锁进阶第十七篇:微服务分布式锁全局治理 + 跨团队统一规范落地 + 全链路稳定性提升方案
redis·分布式·微服务
gQ85v10Db18 小时前
Redis分布式锁进阶第十八篇:本地缓存+分布式锁双锁架构 + 高并发削峰兜底 + 极致性能无损优化实战
redis·分布式·缓存
小江的记录本18 小时前
【Kafka核心】Kafka高性能的四大核心支柱:零拷贝、批量发送、页缓存、压缩
java·数据库·分布式·后端·缓存·kafka·rabbitmq
gQ85v10Db18 小时前
Redis分布式锁进阶第十四篇:全系列终局架构复盘 + 锁体系统一规范 + 线上全年零事故收官方案
redis·分布式·架构
KmSH8umpK18 小时前
Redis分布式锁进阶第十二篇
数据库·redis·分布式
gQ85v10Db19 小时前
Redis分布式锁进阶第十六篇:番外高阶避坑篇 + 隐性埋点锁故障深挖 + 疑难杂症终极兜底方案
数据库·redis·分布式
KmSH8umpK20 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第九篇
数据库·redis·分布式
gQ85v10Db20 小时前
Redis分布式锁进阶第十五篇:全系列终极收官复盘 + 全站锁规范归档 + 生产零故障长期运维兜底总方案
运维·redis·分布式
_F_y21 小时前
仿RabbitMQ实现消息队列-服务端核心模块实现(5)
分布式·rabbitmq
Lyyaoo.21 小时前
Redis实现分布式锁
数据库·redis·分布式