概念

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 了(图二)

图一

图二