在分布式系统中,脑裂(Split-Brain) 是一个非常经典的问题。在 Kafka 的语境下,理解脑裂及其解决机制,需要从 Kafka 的架构演进(依赖 ZooKeeper 时代 vs 较新的 KRaft 时代)来分别说明。 --- 一、 什么是 Kafka 脑裂(Split-Brain)? 在 Kafka 集群中,Controller(控制器) 是集群的大脑,负责管理分区状态、副本状态、处理 Broker 宕机等核心元数据操作。正常情况下,一个 Kafka 集群只能有一个活动的 Controller。 脑裂现象: 由于网络分区(Network Partition)或者长时间的垃圾回收(Full GC)停顿,集群中可能同时出现两个(或多个)Broker 认为自己是 Controller 的情况。 如果这两个“大脑”同时向集群中的其他 Broker 发送管理指令(如重新分配分区 Leader),就会导致集群状态混乱、数据不一致甚至服务崩溃。这就是 Kafka 的脑裂问题。 典型脑裂场景(以 Zookeeper 时代为例): 1. Controller A 正在正常工作。 2. C...