在分布式系统中,脑裂 (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。
- 结果:两个分区互不通信且各自运行,系统中出现了两个“大脑”。
核心危害
- 数据不一致:多个 Leader 同时接收写请求,导致数据冲突且无法自动合并。
- 资源竞争:多个 Leader 可能会同时操作共享资源(如存储卷),导致数据损坏。
预防机制
多数派 (Quorum) 机制,冗余心跳链路,Fencing (隔离) 机制,租约 (Lease) 机制
总结
脑裂是分布式系统的一致性大忌。通过多数派机制,系统在面临分区时宁可牺牲可用性(停服),也要保证一致性(不分裂)。