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所对应的消息被认为是“已提交”或“已备份”的消息,才对消费者可见。

        

 

      

 

posted on 2022-02-13 22:44  溪水静幽  阅读(778)  评论(0)    收藏  举报