03 副本与 ISR
副本与 ISR
leader 接受写入,follower 主动拉取;ISR 是正在跟上 leader 的副本集合,high watermark 限制普通消费者可见的已复制范围。
版本:Apache Kafka 4.4.0(KRaft);核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification {
element actor { style { shape person; color amber } }
element system { style { color muted } }
element component { style { color primary } }
element storage { style { shape storage; color green } }
}
model {
p = actor '生产者'
l = system '分区 leader'
f = system '同步 follower'
ctrl = component 'Controller'
c = actor '消费者'
}
views {
dynamic view index {
title '核心链路'
variant sequence
p -> l 'Produce,示例 acks=all'
l -> l '追加记录并推进 LEO'
f -> l 'Fetch 请求复制'
l -> f '返回新增记录'
f -> l '后续 Fetch 携带已推进的位置'
l -> l '跟踪 ISR 复制进度并推进 HW'
l -> p '满足确认条件后返回成功'
c -> l 'Fetch 已提交范围内的记录'
l -> ctrl '需要时请求更新 ISR / 分区状态'
}
}
关键判断
- LEO 是日志末端,HW 是已复制提交边界;read_committed 还受到事务的 last stable offset 限制。
- 副本落后超限会退出 ISR;启用相应配置时,acks=all 与 min.insync.replicas 联合约束写入可用性。
- 4.4 的 leader 选举还可能涉及 ELR(Eligible Leader Replicas),不能把所有安全候选都机械等同于当前 ISR。
边界
ISR 不是多数派 Raft 投票集;本页业务分区复制与下一页 KRaft 元数据仲裁不能互换。