Kafka 副本管理模块(七):ReplicaManager 副本管理之ISR变更处理

本文介绍了Kafka中ISR(In-Sync Replicas)的管理机制,包括如何通过maybeShrinkIsr方法移除落后的副本,以及如何使用maybeExpandIsr方法增加符合条件的副本。此外,还介绍了ISR变更如何通过maybePropagateIsrChanges方法在整个集群中进行传播。

        除了读写副本、管理分区和副本的功能之外,副本管理器还有一个重要的功能,那就是管理 ISR。这里的管理主要体现在两个方法:

  • maybeShrinkIsr 方法:作用是阶段性地查看 ISR 中的副本集合是否需要收缩;收缩是指,把 ISR 副本集合中那些与 Leader 差距过大的副本移除的过程。所谓的差距过大,就是 ISR 中 Follower 副本滞后 Leader 副本的时间,超过了 Broker 端参数 replica.lag.time.max.ms 值的 1.5 倍。
  • maybePropagateIsrChanges 方法:作用是定期向集群 Broker 传播 ISR 的变更。

maybeShrinkIsr 方法

        maybeShrinkIsr的逻辑就是遍历该副本管理器上所有分区对象,依次为这些分区中状态为 Online 的分区,执行 Partition 类的 maybeShrinkIsr 方法:

  private def maybeShrinkIsr(): Unit = {
    trace("Evaluating ISR list of partitions to see which replicas can be removed from the ISR")

    // Shrink ISRs for non offline partitions
    allPartitions.keys.foreach { topicPartition =>
      nonOfflinePartition(topicPartition).foreach(_.maybeShrinkIsr(config.replicaLagTimeMaxMs))
    }
  }

它实际上执行了partition的maybeShrinkIsr方法


                
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值