脑裂(Split-Brain)

网络分区或旧主未停止时出现两个自认为有效的写入者,导致数据分叉;对策包括多数派仲裁、租约与隔离、fencing 令牌与存储端校验。

成因分区、心跳误判、旧主未及时停止、双活配置缺少仲裁
危害双写冲突、数据回滚或丢失、下游重复处理
防护多数派、租约 + fencing、共享存储校验、人工确认流程
  • 检查仲裁:多数派规则是否生效,弱网时是否误判
  • 检查隔离:旧主是否被 fencing 或存储端拒绝写入
  • 检查双活:是否存在绕过仲裁的直写通道
  • 对账预案:分区恢复后比对两侧数据并执行合并
  • 演练验证:定期模拟分区,验证防护链完整
跨数据中心双主在分区期间必然面临取舍:要么牺牲一侧可用性,要么接受冲突与合并成本。

易错点

  • 只依赖心跳超时切换,未做存储端隔离校验
  • 双活写入冲突依赖时间戳覆盖,导致数据静默丢失

数据来源与参考

  • 《数据密集型应用系统设计》(Kleppmann)第 8、9 章
  • Martin Kleppmann《How to do distributed locking》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌