← 每日面试题 学习看板

介绍一下Kafka的ISR机制?

面试题/03数据库中间件/06MQ/01Kafka/介绍一下Kafka的ISR机制?.md

面试记录 2026-09-22

题目:介绍一下 Kafka 的 ISR 机制?

难度:medium

标签:db/mq/kafka, mq/kafka, general/knowledge, difficulty/medium

评分:未作答(跳过)

我的回答

(未作答,请求讲解后跳过)

点评

优点:

不足:

补充(必须掌握的完整知识链):

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对 Kafka 副本一致性协议的理解——ISR 是 Kafka 用副本换可用性、用 HW 换可靠性的核心机制。

知识点拆解:

  1. 副本三层概念:
  1. ISR 的动态调整规则:
  1. HW(High Watermark)机制:
  1. LEO(Log End Offset):
  1. Leader 选举与故障转移:
  1. 关键组合:
从「副本有哪些」→「HW 怎么算」→「Leader 怎么换」,构成 Kafka 可靠性的完整链条。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. min.insync.replicas=2 但 ISR 只剩 1 个,会怎样?
  1. 为什么 Kafka 选择 ISR 而不是 Raft 的多数派?
  1. HW 会一直等于 LEO 吗?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,ISR 全称是 In-Sync Replicas,即"同步中的副本",是 Kafka 副本一致性机制的核心。

首先理解三个概念:AR 是分区的所有副本,包括 Leader 和 Follower,是配置时确定的静态集合;ISR 是 AR 中跟上 Leader 进度的副本子集,是动态变化的;OBR 是被踢出 ISR 的落后副本。

ISR 的动态规则是这样:Follower 如果超过 replica.lag.time.max.ms(默认 10s)没能追上 Leader 的 LEO,就会被踢出 ISR;追上之后重新加入。注意这是时间维度,不是 offset 落后多少条。

HW(High Watermark)是消费者能看到的最大 offset,等于所有 ISR 副本 LEO 的最小值。消费者只能读 HW 之前的消息,这样才能保证读到的消息已经在多个 ISR 副本里同步过,不会丢。

Leader 挂掉时,Controller 只会从 ISR 里选新 Leader,保证已提交消息不丢。如果 unclean.leader.election.enable=true,可以从 OBR 选,但会丢数据,一般生产不打开。

生产上的推荐配置是 replication.factor=3、min.insync.replicas=2、acks=all,含义是 3 副本至少 2 个确认写入才返回成功,Leader 挂了 ISR 里还有 1 个可用,兼顾可靠性和可用性。

这里有个坑:如果 min.insync.replicas=2 但 ISR 只剩 1 个,Producer 请求会阻塞直到超时,业务侧要监控 ISR 收缩告警。