MST

星途 面试题库

面试题:消息队列Kafka中多副本一致性协议下,ISR集合的作用是什么?

在Kafka基于多副本一致性协议的架构中,请详细阐述ISR(In - Sync Replicas)集合的定义、构成以及它在保障数据一致性和高可用性方面起到的关键作用。
49.1万 热度难度
后端开发消息队列

知识考点

AI 面试

面试题答案

一键面试

ISR集合的定义

ISR(In - Sync Replicas)即同步副本集合,是指在Kafka集群中,与领导者副本(Leader Replica)保持“同步”状态的一组副本。这里的“同步”意味着这些副本能够及时从领导者副本复制数据,其滞后程度在可接受的范围内。

ISR集合的构成

  1. 领导者副本:每个分区都有一个领导者副本,它负责处理该分区的所有读写请求。同时,领导者副本会将接收到的消息同步给ISR中的其他副本。
  2. 跟随者副本:ISR中的跟随者副本从领导者副本拉取消息并写入自身的日志。如果跟随者副本能够及时跟上领导者副本的进度,即其滞后的消息数量在一定阈值内,就会被包含在ISR集合中。判断副本是否“同步”的主要依据通常是副本落后领导者副本的消息条数或者时间间隔。例如,如果一个副本落后领导者副本的消息数超过一定数量,或者在一定时间内没有从领导者副本拉取新消息,那么该副本就可能被移出ISR集合。

ISR集合在保障数据一致性和高可用性方面的关键作用

  1. 数据一致性
    • 确保消息顺序:ISR中的副本严格按照领导者副本的消息顺序进行复制。这保证了消费者从不同副本读取数据时,看到的消息顺序是一致的,从而维护了数据的顺序一致性。
    • 防止数据丢失:当领导者副本发生故障时,Kafka会从ISR集合中选举新的领导者副本。由于ISR中的副本与领导者副本保持同步,新选举的领导者副本中包含了绝大多数已提交的消息,从而避免了因领导者故障导致的数据丢失。只有ISR中的副本全部不可用时,才可能出现数据丢失的情况,但这种情况相对罕见。
  2. 高可用性
    • 快速故障转移:当领导者副本出现故障时,Kafka可以快速从ISR集合中选择一个副本作为新的领导者。因为ISR中的副本与领导者副本状态同步,所以能够迅速接管领导者的工作,继续处理读写请求,减少服务中断时间,保障了系统的高可用性。
    • 负载均衡:ISR中的副本可以分担部分读请求,特别是在需要读取大量历史数据时,可以将读请求分发到跟随者副本上,减轻领导者副本的负载,提高整个集群的读写性能,进一步增强系统的可用性。