ScholarGate
助手

CAP和一致性模型

一致性模型定义了复制系统对读取返回值的保证,而CAP定理则限定了在网络分区下,哪些保证可以与可用性共存。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

一致性模型是复制数据存储与其客户端之间的一项契约,规定了并发读写的允许结果;CAP定理指出,在网络分区存在的情况下,分布式数据存储不能同时提供线性一致性和可用性。

Scope

本主题涵盖了形式化的一致性模型——线性一致性、顺序一致性、因果一致性和最终一致性——以及它们按强度排序;CAP定理及其精确的表述和证明;以及PACELC等在没有分区的情况下也考虑延迟-一致性权衡的改进模型。它提供了指定和比较复制系统保证的词汇。

Core questions

  • 线性一致性、顺序一致性、因果一致性和最终一致性在强度上有何不同?
  • CAP定理究竟禁止了什么,又允许了什么?
  • 在没有分区的情况下,延迟因素如何改进一致性权衡?

Key theories

线性一致性和顺序一致性
线性一致性要求每个操作在调用和响应之间的某个瞬间原子地生效,并与实时保持一致;顺序一致性放弃了实时要求,只要求存在一个单一的合法交错,且尊重每个进程的顺序。
CAP定理
Gilbert和Lynch证明,当网络可能在副本之间丢弃消息时,任何复制数据存储都无法同时保证线性一致性和可用性,这使得在分区期间必须做出选择。
PACELC改进
PACELC通过指出即使没有分区,系统也会在延迟和一致性之间进行权衡来扩展CAP,因此设计特点在于其在分区期间和正常操作中的行为。

Clinical relevance

每个分布式数据库和存储服务都必须声明一个一致性模型,而CAP和PACELC的权衡解释了为什么有些系统优先考虑可用性,而另一些系统则优先考虑一致性;理解它们对于选择和操作数据基础设施至关重要。

History

Lamport于1979年定义了顺序一致性,Herlihy和Wing于1990年形式化了线性一致性;Brewer于2000年提出了CAP权衡猜想,Gilbert和Lynch于2002年证明了它,Abadi在2012年通过PACELC的重新框架阐明了延迟,而不仅仅是分区,是驱动一致性选择的因素。

Debates

CAP是否经常被误解?
CAP经常被概括为“三选二”,但精确的结果只在分区期间强制进行一致性-可用性选择;批评者认为这种过度简化掩盖了PACELC所捕捉到的更相关的日常延迟-一致性权衡。

Key figures

  • Eric Brewer
  • Seth Gilbert
  • Nancy Lynch
  • Maurice Herlihy
  • Jeannette Wing
  • Leslie Lamport

Related topics

Seminal works

  • gilbert2002
  • herlihy1990
  • lamport1979

Frequently asked questions

CAP是否意味着一个系统只能拥有一致性、可用性和分区容错性中的两个?
不完全是。分区是网络的固有事实,而非设计选择,因此真正的决定是在分区期间如何做:牺牲强一致性以保持可用,或牺牲可用性以保持一致。当没有分区时,系统可以同时保持一致和可用。

Methods for this concept

Related concepts