MST

星途 面试题库

面试题:消息队列Kafka的Replication副本机制下,ISR集合是如何维护和运作的

详细描述在Kafka的Replication副本机制里,ISR(In - Sync Replicas)集合的概念、维护过程以及它在副本同步和故障处理等方面起到的关键作用。
22.2万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

ISR集合概念

  • ISR(In - Sync Replicas)即同步副本集合,是指与Leader副本保持“同步”状态的Follower副本集合。在Kafka中,只有ISR中的副本才有资格被选举为新的Leader。“同步”意味着这些Follower副本能够及时从Leader副本拉取数据并进行同步,其落后Leader副本的消息条数在一定阈值内。

ISR维护过程

  1. 副本加入ISR
    • 当一个Follower副本启动并开始从Leader副本拉取数据时,如果它能够及时跟上Leader副本的进度,即落后的消息条数不超过配置的阈值(通过参数 replica.lag.time.max.msreplica.lag.max.messages 控制,新版本主要依赖 replica.lag.time.max.ms),就会被添加到ISR集合中。
  2. 副本移出ISR
    • 如果Follower副本由于网络延迟、磁盘I/O问题等原因,导致它与Leader副本的同步延迟超过了 replica.lag.time.max.ms 配置的时间,或者落后Leader副本的消息条数超过了 replica.lag.max.messages(旧版本),该Follower副本就会被移出ISR集合。
    • 当Follower副本恢复正常,重新追上Leader副本的进度时,又会被重新加入到ISR集合中。

在副本同步和故障处理方面的关键作用

  1. 副本同步
    • 保证数据一致性:ISR集合确保了数据的一致性。只有ISR中的副本同步了数据,才能认为消息已成功提交。这样可以避免数据丢失,因为即使Leader副本发生故障,新选举的Leader也能从ISR中的副本获取到最新的数据。
    • 提高同步效率:Kafka只需要与ISR中的副本进行数据同步,而不需要关注所有的Follower副本。这减少了同步的开销,因为ISR中的副本相对来说是健康且同步状态良好的。
  2. 故障处理
    • Leader选举:当Leader副本发生故障时,Kafka会从ISR集合中选举一个新的Leader。由于ISR中的副本与Leader保持同步,选举出的新Leader能够保证数据的完整性和一致性,最大程度减少数据丢失和不一致的风险。
    • 数据恢复:在故障恢复过程中,Kafka使用ISR中的副本数据进行数据恢复。例如,如果某个Follower副本所在的节点故障,当该节点恢复后,它可以从ISR中的其他副本重新同步数据,快速恢复到故障前的状态。