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

请阐述 Kafka 中 Controller 的故障切换机制。具体包括:Controller 的主要职责是什么?当 Controller 实例发生宕机时,Kafka 集群内部是通过什么流程完成新 Controller 的选举与状态恢复的?

数据技术原理问题排查ZooKeeper

考察说明

考察对 Kafka Controller 职责及故障转移机制的理解深度。

回答思路

  1. 【回答框架 1】Kafka Controller 是集群的中央协调器,负责管理分区leader选举、副本分配、broker上下线处理及元数据更新等。每个broker都可能成为Controller,通过ZooKeeper的临时节点竞争选举。
  2. 【回答框架 2】Controller启动后向ZooKeeper注册监听路径,包括broker变更、topic变更等,并维护集群的元数据缓存。它通过发送LeaderAndIsr请求等控制消息协调broker。
  3. 【回答框架 3】当Controller宕机时,ZooKeeper上的临时节点自动消失,其他broker通过监听该路径感知并尝试创建新临时节点,率先创建成功的broker成为新Controller。
  4. 【回答框架 4】新Controller启动后会执行初始化流程:从ZooKeeper读取集群元数据,处理尚未完成的操作(如分区重分配),并重新对所有分区选举leader(通常选择ISR中第一个副本)。整个过程中,ZooKeeper的会话超时机制决定了感知延迟。
  5. 【回答框架 5】故障恢复期间,部分分区可能暂时不可用,直到新Controller完成leader选举,因此高可用性取决于ZooKeeper的稳定性和Controller的恢复速度。
  6. 【关键点 1】Controller通过ZooKeeper临时节点选举,宕机后临时节点消失触发新选举。
  7. 【关键点 2】新Controller需重新加载元数据并恢复分区leader,期间可能短暂影响可用性。
  8. 【关键点 3】Controller职责包括分区leader选举、broker上下线处理及元数据同步。
  9. 【易错点 1】误以为Controller是单点故障,实际上通过快速恢复保证集群可用性,但恢复期间仍可能缩短服务中断窗口。
  10. 【易错点 2】不考虑ZooKeeper会话超时对故障检测延迟的影响。