MST

星途 面试题库

面试题:消息队列Kafka的ISR集合与高可用性有什么关系?

阐述Kafka中ISR(In - Sync Replicas)集合的定义、动态调整过程,以及它对Kafka高可用性实现的重要性,当ISR中的副本出现异常时,Kafka是如何处理以维持高可用性的?
33.8万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

ISR集合定义

  • ISR(In - Sync Replicas)即同步副本集合,是指在Kafka集群中,与领导者副本(Leader Replica)保持同步状态的一组副本。每个分区都有一个领导者副本,它负责处理该分区的所有读写请求。而ISR中的副本会从领导者副本同步数据,以保持数据的一致性。

动态调整过程

  • 副本加入ISR:当一个追随者副本(Follower Replica)与领导者副本的滞后差距在一定范围内(这个范围由参数replica.lag.time.max.msreplica.lag.max.messages定义)时,该追随者副本会被添加到ISR集合中。例如,如果一个追随者副本在replica.lag.time.max.ms时间内一直从领导者副本同步数据,且同步的消息数量与领导者副本的差距不超过replica.lag.max.messages,就会被纳入ISR。
  • 副本移出ISR:如果一个追随者副本在replica.lag.time.max.ms时间内没有向领导者副本发送FETCH请求,或者发送了FETCH请求但落后领导者副本的消息数量超过replica.lag.max.messages,那么该追随者副本会被从ISR集合中移除。

对Kafka高可用性实现的重要性

  • 数据冗余与容错:ISR确保了数据在多个副本上的同步,即使领导者副本出现故障,也能从ISR中的其他副本选举出新的领导者,保证数据不丢失,从而维持系统的高可用性。例如,在一个包含3个副本的分区中,ISR中有2个副本,当领导者副本崩溃时,另一个ISR中的副本可以迅速成为新的领导者,继续提供服务。
  • 一致性保证:只有ISR中的副本被认为是与领导者副本同步的,这意味着当生产者向领导者副本写入数据并得到确认时,这些数据已经在ISR中的所有副本上得到了同步,保证了数据的一致性,进而支持高可用环境下的数据可靠读写。

ISR副本出现异常时的处理

  • 领导者副本异常:当领导者副本出现故障时,Kafka会从ISR集合中选举一个新的领导者副本。选举过程依赖于Zookeeper,它会记录每个分区的领导者信息。例如,在ISR中有副本A、B,领导者为A,当A故障时,Kafka会从B中选举新的领导者,以继续处理读写请求。
  • 追随者副本异常:如果ISR中的追随者副本出现异常(如网络故障、磁盘故障等)而被移出ISR,Kafka会继续从剩余的ISR副本中进行读写操作。当异常的追随者副本恢复正常后,它会尝试重新追上领导者副本的数据,满足同步条件后再次被添加到ISR中。