Kafka 之 Leader 和 Follower 故障处理
概念
LEO(Log End Offset):每个副本的最后一个offset,LEO = offset + 1
HW(High Watermark):所有副本中最小的 LEO (HW 之前的数据才对 Consumer 可见)
Leader 故障处理
Leader 发生故障之后,会从 ISR 中选出一个新的 Leader
为保证多个副本之间的数据一致性,其余的 Follower 会先将各自的 log 文件高于 HW 的部分截掉,然后从新的 Leader 同步数据。
注意:这只能保证副本之间的数据一致性,并不能保证数据不丢失或者不重
Follower 故障处理
- 当 Follower 发生故障后会被临时踢出 ISR(图一)
- 当该 Follower 恢复后,Follower 会读取本地磁盘记录的上次的 HW,并将 log 文件从 HW 的部分开始截取掉,接着从 HW 开始向 Leader 进行同步(图二)
- 等该 Follower 的 LEO 大于等于该 Partition 的 HW,就可以重新加入 ISR 了(图二)
图一
图二
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论