kafka的副本同步机制(ISR)

一个topic可以有多个分区,多个副本(一般副本数量不大于分区数量)。一份分区下有多个副本,
ISR表示目前消息量与leader相差不多的副本集合,这是整个副本集合的一个子集”。怎么去理解
可用和相差不多这两个词呢?具体来说,ISR集合中的副本必须满足两个条件

    1. 副本所在节点必须维持着与zookeeper的连接
    2. 副本最后一条消息的offset与leader副本的最后一条消息的offset之间的差值不能超过指定的阈值
      (replica.lag.time.max.ms) replica.lag.time.max.ms:如果该follower在此时间间隔内一直没有追
      上过leader的所有消息,则该follower就会被剔除isr列表
    3. ISR数据保存在Zookeeper的/brokers/topics//partitions//state
      节点中
      follower副本把leader副本LEO之前的日志全部同步完成时,则认为follower副本已经追赶上了leader
      副本,这个时候会更新这个副本的lastCaughtUpTimeMs标识,kafk副本管理器会启动一个副本过期检
      查的定时任务,这个任务会定期检查当前时间与副本的lastCaughtUpTimeMs的差值是否大于参数
      replica.lag.time.max.ms 的值,如果大于,则会把这个副本踢出ISR集合
posted @ 2020-12-23 17:17  shan_zhayidian  阅读(1222)  评论(0编辑  收藏  举报