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 确认写入才算安全写入。


相关推荐
梅头脑14 小时前
交易跨10个库、日均千万订单——选错一次分布式事务方案,加班三个月重写
java·分布式
霸道流氓气质17 小时前
分布式系统中接口时序不确定性处理
java·开发语言·分布式
YOU OU18 小时前
Redis分布式锁
数据库·redis·分布式
小罗水21 小时前
第9章 RabbitMQ 消息队列与索引任务
分布式·rabbitmq
剧号21 小时前
互联网大厂Java面试全解析:Java SE 11, Spring Boot及微服务实战问答
java·微服务·面试·kafka·kubernetes·springboot·分布式系统
naierfengdian1 天前
分布式风力发电机机抗风扰、稳发电结构设计技术解析
分布式·能源
wWYy.1 天前
基于Raft分布式Kv存储:sendRequestVote
分布式
笨鸟先飞的橘猫2 天前
游戏后端分布式学习——消息队列在游戏的用法
分布式·学习·游戏
Wang's Blog2 天前
Go-Zero项目开发40: 基于Jaeger的分布式链路跟踪实战
开发语言·分布式·golang
wWYy.2 天前
基于Raft分布式Kv存储:sendAppendEntries
分布式