网络分区期间各分区独立接受了写入,恢复时必须把冲突的数据“和解”。常见方案:

  • 最后写入者胜(LWW):按时间戳取最新写。实现简单(Cassandra 默认),但依赖时钟同步,且并发写会静默丢数据。
  • CRDT(无冲突复制数据类型):用数学上可交换、可结合的合并规则让各副本自动收敛,如计数器 G-Counter、集合 OR-Set,无需协调、永不冲突,但数据类型受限于已有 CRDT 结构。
  • 向量时钟 / 版本向量:检测写之间的因果关系,能分辨“并发冲突”与“先后覆盖”;冲突时保留多个版本(siblings,如 Riak),交给应用层或用户解决。
  • 应用层合并 / 人工解决:业务语义决定合并逻辑——购物车取并集、文档协作用 OT/CRDT 合并、账户余额要求人工介入。
  • 操作日志重放:分区期记录操作,恢复后按序或按幂等规则重放对齐。

选择取决于业务容忍度:丢一条点赞可用 LWW,金融余额必须显式冲突处理。易错点:和解只是 AP 系统的代价,若能用共识协议(Raft/Paxos)选主放弃分区侧写入(CP),很多冲突根本不会产生。