首页/开发/系统分析与架构设计速查/无主复制(Leaderless)

无主复制(Leaderless)

客户端直接向多个副本读写,依赖法定人数与冲突解决保证收敛;常见机制包括读修复、提示移交与反熵同步,可用性高但语义更复杂。

写入并行写多个副本,达到 W 个成功即返回
读取并行读 R 个副本,按版本或时间戳选择
收敛机制读修复、提示移交(hinted handoff)、Merkle 树反熵

读写参数示例

读写参数示例
N = 3 副本,W = 2,R = 2
R + W > N → 读写集合相交,读到较新版本

弱网策略:
- 可用性优先:降低 W(如 W=1)
- 一致性优先:提高 R(如 R=3)
无主复制需要明确冲突解决规则;不同副本返回不同版本时,业务侧要能接受合并结果。

易错点

  • 只用时间戳选版本,时钟偏差导致旧值胜出
  • 未启用读修复与反熵,副本长期不一致

数据来源与参考

  • Amazon Dynamo 论文(SOSP 2007)
  • Cassandra 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌