Skip to content

分布式系统脑裂:多数派、旧主隔离与恢复 ​

修订于 2026-10-12。本文不引用匿名生产故障或未经验证的恢复时长。

“脑裂”通常指集群不同部分都认为自己有资格承担主角色或接受写入。网络分区、心跳延迟和节点暂停可能造成不同观察;仅凭“我暂时联系不上旧主”不能证明旧主已经停止写入。

多数派解决什么 ​

采用多数派决策的系统,只有拥有足够成员的一侧继续提交需要共识的变更。以 etcd 的故障文档为例,网络分区后多数派一侧可继续工作,少数派无法形成提交所需的多数。这牺牲部分可用性,换取避免两侧同时提交互相冲突的状态。

并非每种复制系统都使用相同协议。选方案前要弄清:选主依据是什么、旧主怎样被隔离、客户端怎样找到新主、已确认写入的持久化保证是什么。

恢复检查 ​

  1. 停止旧主继续服务写请求,必要时在存储层或入口层实施隔离。
  2. 确认新主的任期、日志或版本进度,并检查数据差异。
  3. 再引入落后节点,按产品文档完成追赶或重建。
  4. 审计分区期间的客户端错误与结果未知的写入,执行必要的幂等或补偿。
  5. 演练“网络断开又恢复”和“旧主迟到”的情况。

不要把 CAP 定理简化成“任选两个字母”。真实系统还需描述一致性级别、故障模型和恢复过程。

参考资料 ​

梧桐和风 · 让复杂的技术讲得更清楚