这里不得不提 2 个重要参数:
# kafka 0.9.0 版本之前存在的参数
# 这个参数规定了 follower 如果落后 Leader 的消息数量超过了这个参数指定的数量之后,
# 就会认为 follower 是 out-of-sync,就会从 ISR 列表里移除
replica.lag.max.messages
# kafka 0.10.x 新增的参数
# 与 leader 上一次交互时间超过阈值就会把 follower 剔除出 ISR
replica.lag.time.max.ms
为什么新版本移除 replica.lag.max.messages 参数?
设置太大了,影响真正“落后” follower 的移除 设置的太小了,导致 follower 的频繁进出。无法给定一个合适的 replica.lag.max.messages的值,故此,新版本的Kafka移除了这个参数。
一些概念:
- AR(Assigned Repllicas)一个 partition 的所有副本(就是 replica,不区分 leader 或 follower)
- ISR(In-Sync Replicas) 能够和 Leader 保持同步的 follower + leader 本身 组成的集合。
- OSR(Out-Sync Relipcas)不能和 Leader 保持同步的 follower 集合
这里就不得不提