CAP理论

作者: one_zheng | 来源:发表于2019-03-23 21:43 被阅读0次

  CAP定理(CAP theorem)又被称作布鲁尔定理(Brewer's theorem),是加州大学伯克利分校的计算机科学家埃里克布鲁尔(Eric Brewer)在2000年的ACM PODC上提出的一个猜想.2002年,麻省理工学院的赛斯吉尔伯特(Seth Gilbert)和南希林奇(Nancy Lynch)发表了布鲁尔猜想的证明,使之成为分布式计算领域公认的一个定理.对于设计分布式系统的架构师来说,CAP是必须有掌握的理论

  布鲁尔在提出CAP猜想的时候,并没有详细定义Consistency、Availability、Parition Tolerance三个单词的明确定义,因此如果初学者去查询CAP定义的时候会感到比较困惑,因为不同的资料对CAP的详细定义有一些细微的差别,我们采用了Robert Grenier[http://robertgrenier.com/about/]的文章作为参考基础

In a distributed system(a collectuion of interconnected nodes taht share data.),you can only have two out of the following three guarantees across a write/read pair:Consistency, Availability, and Partition Tolerance - one of them must be sacrificed.[http://robertgrenier.com/2014/08/cap-theorem-revisited]

简单翻译为:在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availability)、分区容错性(Partition Tolerance)三者中的两个,另外一个必须被牺牲.

  • 强调了两点:interconnected和 share data,为何要强调这两点呢? 因为分布式系统并不一定会互联和共享数据.最简单的例如Memcache的集群,相互之间就没有连接和共享数据,因此Memcache集群这类分布式系统就不符合CAP理论探讨的对象;而Mysql集群就是互联和进行数据复制的,因此是CAP理论探讨的对象.

  • CAP关注的是对数据的读写操作,而不是分布式系统的所有功能.例如,Zookeeper的选举机制就不是CAP探讨的对象

  1. 一致性(Consistency)

A read is guaranteed to return the most recent write for a given client.

简单翻译为:对某个指定的客户端来说,读操作保证能够返回最新的写操作结果

  1. 可用性(Availability)

A non-failing node will return a reasonable response within a reasonable amount of time (no error or timeout)

简单翻译为:非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)

  1. 分区容忍性(Partition Tolerance)

The system will continue to function when network partitions occur.
简单翻译为:当出现网络分区后,系统能够继续"履行职责"

CAP应用

  虽然CAP理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择P(分区容忍)要素,因为网络本身无法做到100%可靠,有可能出故障,所以分区是一个必然的现象.如果我们选择了CA而放弃了P,那么当发生分区现象时,为了保证C,系统返回error(例如:当前系统不允许写入),这又和A冲突了,因为A要求返回no error和no timeout.因此,分布式系统理论上不可能选择CA架构,只能选择CP或者AP架构.

1.CP - Consistency/Parition Tolerance

  如下图所示,为了保证一致性,当发生分区现象后,N1节点上的数据已经更新到y,但由于N1和N2之间的复制通道中断,数据y无法同步到N2,N2节点上的数据还是x.这时客户端C访问N2时,N2需要返回Error,提示客户端C"系统现在发生了错误",这种处理方式违背了可用性(Availiability)的要求,因此CAP三者只能满足CP。


cp.jpg

2.AP - Availiability/Partition Tolerance
  如下图所示,为了保证可用性,当发生分区现象后,N1节点上的数据已经更新到y,但由于N1和N2之间的复制通道中断,数据y无法同步到N2,N2节点上的数据还是x。这时客户端C访问N2时,N2将当前自己拥有的数据x返回给客户端C了,而实际上当前最新的数据已经是y了,这就不满足一致性(Consistency)的要求了,因此CAP三者只能满足AP。注意:这里N2节点返回x,虽然不是一个“正确”的结果,但是一个“合理”的结果,因为x是旧的数据,并不是一个错乱的值。只是不是最新的数据而已。

ap.jpg

Paxos算法:https://www.jdon.com/artichect/paxos.html

相关文章

  • 分布式理论:CAP是三选二吗?

    CAP是什么?CAP理论,被戏称为[帽子理论]。CAP理论由Eric Brewer在ACM研讨会上提出,而后CAP...

  • ZooKeeper(六)-- CAP和BASE理论、ZAB协议

    一、CAP理论和BASE理论 1.CAP理论 CAP理论,指的是在一个分布式系统中,不可能同时满足Consiste...

  • CAP 理论十二年回顾:"规则"变了

    CAP理论的证明参见:本文转自:CAP 理论十二年回顾:"规则"变了 CAP 理论断言任何基于网络的数据共享系统,...

  • 架构师进阶实战随堂笔记三

    场景三分布式系统中的CAP原则 CAP&Base 理论介绍与案例分享 CAP理论介绍 CAP原理 一致性(Cons...

  • 《分布式技术原理与算法解析》学习笔记Day20

    CAP理论 什么是CAP理论? CAP理论用来指导分布式系统设计,以保证系统的可用性、数据一致性等。 C,Cons...

  • CAP理论

    Distributed Systems Distributed system is a software syst...

  • CAP理论

    Consistency :所有节点在同一时间看到相同的数据 Availability :部分节点故障,剩下的节点...

  • CAP 理论

    http://www.infoq.com/cn/articles/cap-twelve-years-later-h...

  • CAP理论

    CAP分布式理论 2002年CAP理论正式成为分布式计算领域的公认定理 CAP指一致性(Consisitency)...

  • CAP理论

    前言总结 C: 一致性(consistency),一个分布式系统的多台服务器,只要能够提供服务,则提供的数据都一致...

网友评论

      本文标题:CAP理论

      本文链接:https://www.haomeiwen.com/subject/kmccvqtx.html