在分布式系统中,脑裂 (Split Brain) 是指由于网络故障(如网络分区),导致一个集群分裂成多个独立的部分,且每个部分都认为自己是唯一的存活集群,并尝试独立提供服务或进行决策的现象。

产生原因

最常见的原因是网络分区 (Network Partition)

图解脑裂过程

graph LR
    subgraph "分区 A (孤立)"
        A[节点 A: Leader]
    end

    subgraph "分区 B (多数派)"
        B[节点 B: Leader] --- C[节点 C]
    end

    A -.-x|网络中断| B
    A -.-x|网络中断| C
  • 分区 A:节点 A 无法联系其他节点,认为自己仍是 Leader。
  • 分区 B:节点 B 和 C 组成多数派,选举出了新的 Leader。
  • 结果:两个分区互不通信且各自运行,系统中出现了两个“大脑”。

核心危害

  1. 数据不一致:多个 Leader 同时接收写请求,导致数据冲突且无法自动合并。
  2. 资源竞争:多个 Leader 可能会同时操作共享资源(如存储卷),导致数据损坏。

预防机制

多数派 (Quorum) 机制,冗余心跳链路,Fencing (隔离) 机制,租约 (Lease) 机制

总结

脑裂是分布式系统的一致性大忌。通过多数派机制,系统在面临分区时宁可牺牲可用性(停服),也要保证一致性(不分裂)。