CAP定理-可用性和分区容限

问题描述 投票:164回答:7

虽然我试图理解CAP中的“可用性”(A)和“分区容限”(P),但我发现很难理解各种文章中的解释。

我感觉到A和P可以一起走(我知道不是这样,这就是为什么我听不懂!)。

简单地说,A和P是什么,它们之间的区别是什么?

database nosql consistency availability
7个回答
317
投票

一致性意味着整个集群中的数据都是相同的,因此您可以从任何节点读取或写入任何节点,并获取相同的数据。

可用性意味着即使集群中的节点出现故障也可以访问集群。

分区容限意味着,即使两个节点之间的“分区”(通信中断)(两个节点都在上,但无法通信),集群也可以继续运行。

为了同时获得可用性和分区容忍度,您必须放弃一致性。考虑在主-主设置中是否有两个节点X和Y。现在,X和Y之间的网络通信中断,因此它们无法同步更新。此时,您可以:

A)允许节点不同步(放弃一致性),或

B)认为群集已“关闭”(放弃可用性)

所有可用的组合是:

  • CA-所有节点之间的数据都是一致的-只要所有节点都处于联机状态-您就可以从任何节点读取/写入数据,并确保数据相同,但是如果您在节点,数据将不同步(一旦解决分区,将不会重新同步)。
  • CP-所有节点之间的数据都是一致的,并且当节点发生故障时变得不可用,从而保持分区容限(防止数据不同步)。
  • AP-节点即使无法彼此通信也将保持联机状态,并且一旦分区解决后将重新同步数据,但是不能保证所有节点都具有相同的数据(在此期间或之后)分区)

您应注意,CA systems don't practically exist(即使某些系统声称是这样)。


30
投票

[将P与C和A等同地考虑是一个错误,而C,A,P中的'3之2'的概念是误导的。我要简单地解释CAP定理的方式是:“在分布式数据存储中,在进行网络分区时,您必须选择“一致性”或“可用性”,而不能同时选择两者。较新的NoSQL系统试图将重点放在可用性上,而传统的ACID数据库则将重点放在一致性上。

您确实不能选择CA,网络分区不是任何人都想要的,这只是分布式系统的不受欢迎的现实,网络可能会失败。问题是,当发生这种情况时,您会为应用程序选择什么权衡。最早提出该术语的人的article似乎很清楚地解释了这一点。


18
投票

这里是我讨论CAP的方法,特别是关于P的问题。

只有在您可以使用单一的单服务器数据库(可能具有复制功能,但所有数据都位于一个“故障块”上–服务器不被视为部分故障)的情况下,CA才可能。

如果您的问题需要横向扩展,分布式和多服务器,则可能会发生网络分区。您已经在要求P。我所解决的问题很少是总是采用单服务器范例的(或者如Stonebraker所说,“分布式就是赌注”)。如果您发现CA问题,那么像传统的非横向扩展RDBMS这样的解决方案将带来很多好处。

对我来说,很少见:所以我们继续讨论AP与CP。

只有在有分区时,才可以在AP和CP操作之间进行选择。如果网络和硬件运行正常,您也可以吃蛋糕。

让我们讨论AP / CP的区别。

AP-有网络分区时,让独立的部分自由运行。

CP-当存在网络分区时,请关闭节点或禁止进行读写操作,从而导致确定性故障。

我喜欢可以同时实现这两种功能的体系结构,因为有些问题是AP,有些是CP-有些数据库可以同时做到。在CP和AP解决方案中,也有一些细微之处。

例如,在AP数据集中,您可能会出现读取不一致和生成写冲突的情况-这是两种可能的AP模式。可以将系统配置为具有高读取可用性的AP,但不允许写入冲突吗?或者您的AP系统可以使用强大而灵活的解析系统来接受写入冲突?您最终会需要两者吗,还是可以选择一个只需要一个的系统?

在CP系统中,如果有小分区(单个服务器),您将获得多少不可用性?更大程度的复制会增加CP系统中的不可用性,系统如何处理这些折衷?

这些都是与CP和AP有关的所有问题。

Brewer的“ 12年后”一书是该领域的热门读物。我相信这将清楚地推动CAP辩论,并强烈推荐。

http://www.infoq.com/articles/cap-twelve-years-later-how-the-rules-have-changed


8
投票

CAP Theorem


0
投票

一致性–当我们发送读取请求时,如果返回的是结果,它应该返回客户端请求给出的最新写入。可用性–您的读/写请求应始终成功。分区容限–发生网络分区(某些机器相互交谈的问题)时,系统仍应正常工作。


0
投票

在简单的CAP定理中,分布式系统不可能同时提供所有三个保证:


0
投票

我觉得在任何一个答案中分区容忍度都没有很好地解释,只是为了更详细地解释CAP定理的意思:

© www.soinside.com 2019 - 2024. All rights reserved.