数据复制与一致性
数据复制保留数据的多个副本以提高可用性和性能,而一致性协议则管理这些副本之间的读写如何协调。
用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
Learn & explore
视频即将推出
Definition
数据复制在多个节点上维护数据项的副本;一致性模型规定了在给定写入历史的情况下,读取可能返回的值的保证,范围从强一致性(每次读取都看到最新的写入)到最终一致性(如果更新停止,副本会收敛)。
Scope
本主题涵盖复制策略(主备、多主、法定人数)、基于法定人数的读写协议及其交集要求、最终收敛的抗熵和流言传播、使用版本向量和无冲突复制数据类型(CRDTs)进行冲突检测,以及从线性化到最终一致性的一致性谱系。它将数据层面的复制视为状态机复制的对应物。
Core questions
- 读写法定人数的大小如何保证读取观察到最新的写入?
- 在最终一致性下,副本如何收敛,冲突如何解决?
- 应用程序应根据其延迟和可用性需求选择何种一致性级别?
Key theories
- 复制数据的法定人数共识
- 通过为副本分配投票并要求读写法定人数的总和大于总数,每个读法定人数都会与最新的写法定人数相交,从而保证读取观察到最新数据。
- 最终一致性和抗熵
- 高可用性存储接受在任何副本上的写入,并通过流言传播和版本向量异步协调,仅保证当更新停止时副本会收敛,Dynamo设计即是例证。
- 无冲突复制数据类型
- CRDTs是数据类型,其操作被设计为可交换,或者其状态形成一个连接半格,因此并发更新无需协调即可确定性地合并,从而提供强最终一致性。
Clinical relevance
这些技术定义了实际存储系统的保证:法定人数协议是强一致性键值存储的基础,而最终一致性和CRDTs则为高可用性存储、购物车和协作编辑器提供了支持,在这些应用中,可用性优先于即时一致性。
History
Gifford于1979年提出的加权投票方案确立了法定人数复制;Amazon在2007年发布的Dynamo论文推广了高可用性最终一致性;2011年CRDTs的正式化为无需协调的收敛提供了原则性基础,塑造了现代复制数据设计。
Debates
- 复制数据默认应提供多少一致性?
- 强一致性简化了应用程序开发,但限制了可用性并增加了延迟,而最终一致性最大化了可用性,但代价是暴露了暂时的分歧;可调法定人数和CRDTs是试图让应用程序按操作选择一致性的尝试。
Key figures
- David Gifford
- Werner Vogels
- Marc Shapiro
- Andrew S. Tanenbaum
Related topics
Seminal works
- gifford1979
- decandia2007
- shapiro2011
Frequently asked questions
- 读写法定人数如何保证读取到最新数据?
- 如果一次写入必须到达W个副本,一次读取必须查询R个副本,并且R加W超过了副本总数,那么任何读法定人数都会与最近的写法定人数在至少一个副本中重叠,因此读取可以观察到最新值。