在 Apache Kafka 集群中,Controller 承担了怎样的角色?请说明它在集群运行中发挥的具体作用。
考察说明
考查对 Kafka 集群核心组件 Controller 职责与工作机制的理解。
回答思路
- 【回答框架 1】Controller 是 Kafka 集群中负责管理分区与副本状态的特殊 Broker,通过 ZooKeeper 或 KRaft 元数据注册表选举产生,同一时刻只有一个活跃 Controller。
- 【回答框架 2】其核心职责包括分区 Leader 选举、分区与副本的分配、元数据变更的广播,以及处理 Broker 上下线时的重分配与故障转移。
- 【回答框架 3】Controller 通过监听元数据变更事件,维护集群的元数据缓存,并将变更以请求方式推送给所有 Broker,保证集群状态一致。
- 【回答框架 4】在 ZooKeeper 模式下,Controller 依赖 ZooKeeper 的临时节点与 Watch 机制实现选举与故障检测;在 KRaft 模式下,则基于 Raft 协议选举 Controller 并管理元数据日志。
- 【回答框架 5】Controller 的故障会导致集群短暂不可用,但新 Controller 会从元数据存储中恢复状态,重新接管管理职责,期间可能触发部分分区 Leader 的重新选举。
- 【关键点 1】Controller 是集群中唯一的管理者,负责分区 Leader 选举与元数据管理。
- 【关键点 2】Controller 通过 ZooKeeper 或 KRaft 选举产生,故障时自动切换。
- 【关键点 3】Controller 将元数据变更广播给所有 Broker,确保集群状态一致。
- 【易错点 1】不要将 Controller 与分区 Leader 混淆,Controller 管理整个集群,分区 Leader 只管理单个分区。
- 【易错点 2】不要认为 Controller 是单点故障导致数据丢失,其状态可从元数据存储恢复。
- 【易错点 3】在 KRaft 模式下,Controller 与元数据日志绑定,选举机制与 ZooKeeper 模式不同。