ZooKeeper 主要通过 ZAB 协议(ZooKeeper Atomic Broadcast) 结合 过半机制(Quorum) 和 Epoch(纪元/时代) 概念来解决脑裂(Split-Brain)问题。 简单来说,ZooKeeper 宁可牺牲可用性(停止服务),也要保证数据的一致性(CP原则)。 以下是具体的解决机制详解: 1. 过半机制(Quorum / Majority)—— 物理层面的防线 这是防止脑裂最基础的数学保证。ZooKeeper 规定:任何事务的提交和 Leader 的选举,都必须得到集群中“过半数”节点的认可。 公式: $N/2 + 1$ 原理: 在一个集群中,不可能同时存在两个“过半数”的子集群。 假设集群有 5 台机器。过半数是 3。 如果网络断开,集群分裂成 A区(2台)和 B区(3台)。 B区: 拥有 3 台机器(满足过半),可以选举出 Leader 并正常工作。 A区: 只有 2 台机器(不满足过半),无法选举出 Leader,也无法处理写请求,这部分集群会自动进入不可用状态(只读或停止服务)。 结论: 物理上保证了同一时间只能有一个合法的 Le...