CAP理论与PACELC

从去年开始接触NoSQL的知识,CAP理论可以说是整个NoSQL运动者的理论指导。

CAP理论由UC Berkeley的Eric Brewer教授在2000年提出,并于2002年由MIT的Seth Gilbert & Nancy Lynch给出了严谨的证明。

CAP理论认为以下三者不能同时满足:

  • 一致性(Consistency): 所有的节点在同一时刻看到同样的数据。
  • 可用性(Availability):  节点失效不会影响系统的读写。
  • 分区容忍性(Partition Tolerance): 系统能支持网络分区,即使分区之间的消息丢失系统也正常工作。

对C、A、P三者的解读很有很多种,具体可以看后面的参考。

通过上图我们可以看出,根据业务的不同,不同的存储系统会根据自身业务的需求在CAP三者中进行权衡,因此CAP理论的意义应该是一种在分布式数据存储系统设计时tradeoff,而非绝对的认为三者必须舍弃一者,特别是在CAP理论中没有提到系统的响应时间因素,而数据的访问时延是很重要的可用性因素。

Yale的Daniel Abadi认为CAP理论简单的描述有可能造成错误的解读,重新定义了一个模型PACELC,添加了系统中的Latency描述。

上图的意思是,如果一个系统需要进行分区,那就必须在可用性(A)或者一致性(C)之间做出一种tradeoff,否则就需要在系统的延迟(L)和一致性(C)之间做出tradeoff,此模型描述了大多数NoSQL数据库中实现CAP理论的方式,也更具备工程中的意义。

参考:
Julian Browne, Brewer’s CAP Theory 懒得看英文的可以看译文
D. Abdi,   Problems with CAP, andYahoo’s little known NoSQL system

转载请注明来源:Leoncom-《CAP理论与PACELC》
,
Trackback

no comment untill now

Add your comment now