ISR
1、AR(Assigned Repllicas)一个partition的所有副本(就是replica,不区分leader或follower)
2、ISR(In-Sync Replicas)能够和 leader 保持同步的 follower + leader本身 组成的集合。
3、OSR(Out-Sync Relipcas)不能和 leader 保持同步的 follower 集合
Kafka只保证对ISR集合中的所有副本保证完全同步。处于ISR内部的follower都是可以和leader进行同步的,一旦出现故障或延迟,就会被踢出ISR。
ISR 的核心就是:动态调整
Kafka采用的就是一种完全同步的方案,而ISR是基于完全同步的一种优化机制。
follower的作用:读写都是由leader处理,follower只是作备份功能,不对外提供服务。
什么情况ISR中的replica会被踢出ISR?
# 默认10000 即 10秒
replica.lag.time.max.ms
当follower副本将leader副本的LEO之前的日志全部同步时,则认为该follower副本已经追赶上leader副本。
此时更新该副本的lastCaughtUpTimeMs标识。
Kafka的副本管理器(ReplicaManager)启动时会启动一个副本过期检测的定时任务,
会定时检查当前时间与副本的lastCaughtUpTimeMs差值是否大于参数replica.lag.time.max.ms指定的值。
所以replica.lag.time.max.ms的正确理解是:
follower在过去的replica.lag.time.max.ms时间内,已经追赶上leader一次了。
LEO(last end offset):当前replica存的最大的offset的下一个值
HW(high watermark):小于 HW 值的offset所对应的消息被认为是“已提交”或“已备份”的消息,才对消费者可见。

立志如山 静心求实
浙公网安备 33010602011771号