猫头鹰的深夜翻译:理解CAP定理

逻辑踏云人
• 阅读 3888

CAP定理是用来提醒设计师在设计联网的共享数据系统时需要作出的权衡。CAP理论影响了很多分布式数据系统的设计。这几年来,CAP一直被广泛的误解为是用于对数据库进行分类的工具。也流传着许多关于CAP的错误的信息。很多关于CAP博客的观点极有可能是错误的。

你需要进一步的了解CAP从而去分辨出关于CAP的错误的信息。

CAP定理适用于存储状态的分布式系统。在2000年的PODC上,Eric Brewer推测在任何联网的数据共享系统中,一致性、可用性和分区容忍性之间本质上存在折中。在2002年,MIT的Seth Gilbert和Nancy Lynch发表了对Eric Brewer推论的证明。这个理论说明网络数据共享系统只能确保或是强有力的支持一下三个属性中的两个:

  • 一致性:确保分布式集群中的每一个节点都返回相同的,最近成功写入的数据。一致性意味着客户对数据的视图是一样的。有各种各样的一致性模型。而CAP中的一致性是指线性化或是顺序一致性,这是一种强一致性。
  • 可用性:每一个非故障节点能够在一定时间内对客户端的请求作出相应。这里的重点在于每一个。为了实现可用性,在任意一个网络分区的节点都必须能够在一定时间内作出响应。
  • 分区容忍性:尽管存在网络分区,但是系统依然能够继续运行并且保证一致性。网络分区已经成了生活中的常态。实现分区容忍性的分布式系统能够保证分区能够正常的从故障中恢复。

ACID中的C和A与CAP定理中的C和A是不一样的概念。

CAP定理将系统划分为三类:

  • CP(一致性和分区容忍性):乍一看来,CP系统令人困惑。换句话说,一个系统具有一致性和分区容忍性,但是永远都不可用。CP被认为是在网络分区的场景下牺牲可用性的一类系统。
  • CA(一致性和可用性):CA系统是指没有网络分区并实现一致性和可用性的数据库。通常认为一个单节点的数据库服务器可以归类为CA。单节点的数据库服务器永远都不需要处理分区容忍性,因此被认为是一个CA系统。这个理论的漏洞在于单节点的数据库不是联网共享数据的分布式系统,根本就不适用于CAP。
  • AP(可用性和分区容忍性):这是具有可用性和分区容忍性但是不保证一致性的系统。

通常用文斯图或是一个三角形来可视化CAP定理。各种各样的系统落入这三个圆圈相交的类型。
猫头鹰的深夜翻译:理解CAP定理

文斯图或是三角形图对CAP的描述是错误的并且具有误导性。正确的理解是当需要进行网络分区时,设计师需要从可用性和线性一致性二选一。在任何一个联网的数据共享系统中,分区容忍性都是必须的。网络分区和消息的丢失是常态,必须合理的解决这个问题。简单来说,网络分区迫使设计师必须从强一致性和强可用性直接二选一。选择一致性就意味着无法随时响应客户的查询,因为系统无法保证返回最近一次的写入结果,从而牺牲了可用性。网络分区会强制一些正常运行的节点拒绝响应客户端的请求,因为这些节点当前无法保证数据的一致性。

而与此相反,选择可用性意味着随时能够响应客户的请求,但是系统无法保证数据的一致性,比如最近的一次写入。高可用性的系统会尽可能的提供最佳答案。

在正常的操作中(无网络分区的场景),CAP理论不会对可用性或一致性施加限制。

CAP定理负责引出关于分布式共享系统中各种折中的理论。它对于我们加深对共享系统的理解起着重要的作用。然而,CAP的描述过于简单并具有误导性,Brewer 承认CAP理论简化了在网络分区中可用的选项。系统的设计者可以有多种方法从网络分区中恢复数据。每个系统都应当尽力实现“基于特定应用最大程度的结合可用性和一致性”。

猫头鹰的深夜翻译:理解CAP定理
想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Linux下使用V4L2读取获取拍照(获取静态图像)
include<linux/videodev2.h1\.打开设备 int fd  open("/dev/video0", O_RDWR);2\.查询设备属性    struct v4l2_capability cap;    ioctl(fd, VIDIOC_QUERYCAP, &cap); 
Wesley13 Wesley13
3年前
CAP理论
cap理论博客分类:架构CAP理论由EricBrewer在ACMPODC会议上的主题报告中提出,这个理论是NoSQL数据管理系统构建的基础,如下图所示:▲CAP理论  其中字母“C”、“A”、“P”分别代表以下三个特征:  ·强一致性(Consistency)。系统在执行过某项操作后仍然处于一致的状态。在分布式系统中,更新操作执行成功
Wesley13 Wesley13
3年前
CAP定理的理解
CAP定理1.CAP1.1定义以下定义来自维基。在理论计算机科学中,CAP定理(CAPtheorem),又被称作布鲁尔定理(Brewer'stheorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点:一致性(Consistency)(等同于所有节点访问同一份最新的数据副本)
Wesley13 Wesley13
3年前
CAP理论与分布式事务解决方案
微服务系统所设计的系统是分布式系统。分布式系统有一个著名的CAP理论,即同时满足“一致性”“可用性”和“分区容错”是一件不可能的事。CAP理论是由EricBrewer在2000年PODC会议上提出的,该理论在两年后被证明成立。CAP理论告诉架构师不要妄想设计出同时满足三者的系统,应该有所取舍,设计出适合业务的系统。CAP理论示意图!(https:/
Wesley13 Wesley13
3年前
CAP定理与BASE理论
1\.CAP定理C:Consistency,一致性A:Availability,可用性P:Partitiontolerance,分区容错性CAP定理,指的是在一个分布式系统中,一致性、可用性、分区容错性,三者不可得兼。2\.CAP详解2.1一致性(C)指所有节点访问同一份最新的
Wesley13 Wesley13
3年前
CAP BASE ACID
CAP(理论)Consistency(一致性),数据一致更新,所有数据变动都是同步的Availability(可用性),好的响应性能Partitiontolerance(分区容错性)可靠性定理:任何分布式系统只可同时满足二点,没法三者兼顾。忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。
Wesley13 Wesley13
3年前
CAP理论
分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:●一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)●可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)●分区容错性(P):以实际效果而言,分区相当于对
Wesley13 Wesley13
3年前
CAP理论概述和现状
CAP理论断言任何基于网络的数据共享系统,最多只能满足数据一致性、可用性、分区容忍性三要素中的两个要素。但是通过显式处理分区情形,系统设计师可以做到优化数据一致性和可用性,进而取得三者之间的平衡。自打引入CAP理论的十几年里,设计师和研究者已经以它为理论基础探索了各式各样新颖的分布式系统,甚至到了滥用的程度。NoSQL运动也将CAP理论当作对抗传统关系型
Stella981 Stella981
3年前
Raft分布式一致性算法整理
CAP定理1.Consistency:一致性2.Availability:可用性3.Partitiontolerance:分区容错性CAP定理指出,在异步网络模型中,不存在一个系统可以同时满足上述3个属性。换句话说,分布式系统必须舍弃其中的一个属性。对于需要在分布式条件下运行的系统来说,如何在一致性、可用性和分区容错
Wesley13 Wesley13
3年前
CAP理论的理解
转自:https://www.cnblogs.com/mingorun/p/11025538.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fmingorun%2Fp%2F11025538.html)CAP理论的理解(https://
Stella981 Stella981
3年前
Linux下分布式系统以及CAP理论分析
CAP理论被很多人拿来作为分布式系统设计的金律,然而感觉大家对CAP这三个属性的认识却存在不少误区,那么什么是CAP理论呢?CAP原本是一个猜想,2000年PODC大会的时候大牛Brewer提出的,他认为在设计一个大规模可扩放的网络服务时候会遇到三个特性:一致性(consistency)、可用性(Availability)、分区容错(partitionto