目录
一、什么是ISR (in-sync replica set )
二、什么是OSR(out-of-sync-replica set)
一、什么是ISR (in-sync replica set )
leader会维持一个与其保持同步的replica集合,该集合就是ISR,每一个leader partition都有一
个ISR,leader动态维护, 要保证kafka不丢失message,就要保证ISR这组集合存活(至少有一个存活),
并且消息commit成功
Partition leader 保持同步的 Partition Follower 集合, 当 ISR 中的Partition Follower
完成数据的同步之后,就会给 leader 发送 ack
如果Partition follower长时间(replica.lag.time.max.ms) 未向leader同步数据,则该
Partition Follower将被踢出ISR
Partition Leader 发生故障之后,就会从 ISR 中选举新的 Partition Leader。
二、什么是OSR(out-of-sync-replica set)
与leader副本分区 同步滞后过多的副本集合
三、什么是AR(Assign Replicas)
分区中所有副本统称为AR AR=ISR+OSR
四、HighWatermark的作用
背景 broker故障后
ACK保障了【生产者】的投递可靠性
partition的多副本保障了【消息存储】的可靠性
hw的作用是啥?
备注:重复消费问题需要消费者自己处理
HW作用:保证消费数据的一致性和副本数据的一致性
举例:
假设没有HW,消费者消费leader到15,下面消费者应该消费16。
此时leader挂掉,选下面某个follower为leader,此时消费者找新leader消费数据,发现新Leader没有16数据,报错。
HW(High Watermark)是所有副本中最小的LEO。
Follower故障
Follower发生故障后会被临时踢出ISR(动态变化),待该follower恢复后,follower会读取本
地的磁盘记录的上次的HW,并将该log文件高于HW的部分截取掉,从HW开始向leader进行同步,
等该follower的LEO大于等于该Partition的hw,即follower追上leader后,就可以重新加入ISR
Leader故障
Leader发生故障后,会从ISR中选出一个新的leader,为了保证多个副本之间的数据一致性,其余
的follower会先将各自的log文件高于hw的部分截掉(新leader自己不会截掉),然后从新的
leader同步数据