数据岗位面试题更新 2026-08-05

请解释 Kafka 中 ISR(In-Sync Replica)的概念,并阐述它是如何确保消息可靠性的?

数据风险判断技术原理Apache Kafka

考察说明

考察对 Kafka 副本同步机制和可靠性保障原理的理解。

回答思路

  1. 【回答框架 1】ISR 是 Kafka 中与领导者副本保持同步的副本集合,包括领导者自身和追随者副本。同步意味着追随者副本的消息偏移量在限定范围内追上领导者,通常由 replica.lag.time.max.ms 参数控制,超过该时间未跟上则被移出 ISR。
  2. 【回答框架 2】领导者负责处理读写请求,消息写入领导者后,只有 ISR 中的副本都成功写入,才向生产者返回成功(acks=all),这保证了消息不会丢失,因为如果领导者故障,新的领导者会从 ISR 中选举,ISR 中的副本拥有完整数据,从而保证数据不丢失。
  3. 【回答框架 3】ISR 机制结合生产者 acks 设置来保证可靠性。当生产者设置 acks=all 时,消息需要等待所有 ISR 副本确认,这是最高可靠性;acks=1 只需领导者确认,可能丢失;acks=0 不等待确认,可靠性最低。
  4. 【回答框架 4】ISR 会动态调整,当副本落后过多或故障时被移出,恢复后重新加入。参数 min.insync.replicas 指定 ISR 的最小数量,当 ISR 数量低于该值,生产者写入会被拒绝,避免数据写入仅有的副本。
  5. 【回答框架 5】可靠性还依赖副本同步的机制,追随者主动从领导者拉取数据,但 Kafka 不保证所有副本实时同步,只保证 ISR 内副本一致,因此任何时刻消息可能只存在于领导者,但 ISR 机制通过选举和最小副本数设置平衡可用性与一致性。
  6. 【关键点 1】ISR 是同步副本集合,表示当前与领导者保持同步的副本,包括领导者。
  7. 【关键点 2】可靠性保障依赖 acks=all 时,消息需写入所有 ISR 副本才确认。
  8. 【关键点 3】动态调整机制:落后副本会被移出 ISR,恢复后重新加入。
  9. 【关键点 4】min.insync.replicas 控制最小 ISR 数量,低于该值拒绝写入,防止数据丢失。
  10. 【易错点 1】不能将 ISR 等同于所有副本,ISR 是动态变化的。
  11. 【易错点 2】acks=all 不保证消息不丢失,还需 min.insync.replicas 配置,否则可能只有领导者确认。
  12. 【易错点 3】ISR 机制不解决所有可靠性问题,如领导者崩溃但仍未提交的消息,但通过选举 ISR 中副本保证数据不丢失。