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

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

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

我觉得 A 和 P 可以一起去(我知道情况并非如此,这就是为什么我不明白!)。

用简单的术语解释,什么是 A 和 P 以及它们之间的区别?

582

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

可用性意味着即使集群中的某个节点发生故障,也能够访问集群。

分区容忍度意味着即使两个节点之间存在“分区”(通信中断)(两个节点都已启动,但无法通信),集群仍将继续运行。

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

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

B) 考虑集群“关闭”(放弃可用性)

所有可用的组合是:

CA-所有节点之间的数据是一致的-只要所有节点都在线-您可以从任何节点读取 / 写入并确保数据相同,但是如果您在节点之间开发分区,数据将不同步(并且一旦分区被解析就不会重新同步)。

CP-数据在所有节点之间保持一致,并通过在节点停机时变得不可用而保持分区容忍度(防止数据不同步)。

AP-节点保持在线,即使它们不能相互通信,并且一旦分区被解析,将重新同步数据,但你不能保证所有节点将具有相同的数据(在分区期间或之后)

您应该注意CA systems don't practically exist(即使某些系统声称如此)。

77

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

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

21

这是我如何讨论 CAP,特别是关于 P。

CA 是唯一可能的,如果你是一个单一的,单一的服务器数据库(也许与复制,但在一个“故障块”的所有数据-服务器不被认为是部分失败)。

如果您的问题需要横向扩展、分布式和多服务器---网络分区可能会发生。您已经需要 P。我所解决的问题很少适合单服务器始终范式 (或者,正如 Stonebraker 所说,“分布式是表的赌注”)。如果您可以找到一个 CA 问题,那么像传统的非横向扩展 RDBMS 这样的解决方案会提供很多好处。

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

只有在有分区的情况下,您才能在 AP 和 CP 操作之间进行选择。如果网络 & amp;硬件正常运行,那么您也可以吃蛋糕。

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

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

CP-当存在网络分区时,关闭节点或不允许读取和写入,因此存在确定性故障。

我喜欢可以做到这两者的架构,因为有些问题是 AP,有些是 CP-有些数据库可以做到这两者。

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

在 CP 系统中,如果有的话,小分区(单个服务器)会导致多少不可用性?更大的复制会增加 CP 系统中的不可用性,系统如何处理这些权衡?

这些都是 CP vs AP 要问的问题。

布鲁尔的“12 年后”帖子是目前这方面的一个很好的读物。我相信这将清晰地推进 CAP 辩论,并高度推荐它。

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

CAP Theorem

一致性:

确保读取返回给定客户端的最新写入(如 ACID)。如果在这段时间内收到任何请求,则必须等待,直到跨节点 / 在节点中完成数据同步

可用性:

每个节点(如果没有失败)总是执行查询,并且应该总是响应请求。它是否返回最新的副本并不重要。

分区公差:

当网络分区发生时,系统将继续运行。

关于AP,可用性(始终可访问)可以存在(Cassendra)或不存在(RDBMS)分区容差

pic source

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(948)
如何区分单击事件和双击事件 (double click)
上一篇
\ s和\t有什么区别
下一篇

相关推荐

  • type c接口是啥改变你的充电体验

    示例示例Type C接口是一种新型的USB连接器,它可以支持更高的数据传输速度,比传统的USB 0接口更快。与传统的USB接口不同,Type C接口可以在两端都使用,无需额外的翻转,使连接更加方便快捷。下面是一个使用Type C接口的代码示例:…

    2023-01-12 02:06:09
    0 80 60
  • carwings是什么意思智能汽车连接系统的未来

    Carwings是日产汽车公司推出的一款远程智能汽车服务,它可以帮助用户远程监控汽车的状态和行驶信息,并且可以远程控制汽车的功能。…

    2023-01-19 13:55:38
    0 49 22
  • cvt变速箱油分几种:CVT变速箱油的种类及用法

    cvt变速箱油一般分为三种,分别是:传统cvt变速箱油:代码:CVT-1…

    2023-01-27 12:23:25
    0 62 99
  • contextcapture集群:如何使用ContextCapture技术构建高效的3D集群

    ContextCapture集群是一种分布式的技术,它可以让多台服务器共享数据,从而提高应用程序的性能和可靠性。它可以使用多台服务器来收集、存储和处理数据,而不需要单独的服务器来执行这些任务。…

    2023-01-05 08:03:52
    0 59 64
  • code128条码字体下载:使用 Code128 条码字体创建条码标识

    code128条码字体下载是指下载code128条码字体的过程。Code128条码字体是一种用于生成Code128条形码的字体。它可以将文本转换为条形码,并将条形码打印在各种类型的媒体上。要下载code128条码字体,可以从网上搜索“code128条码字体下载”,然后选择一个可靠的网站下载。一旦下载完成,就可以使用该字体创建code128条形码。…

    2023-01-19 14:44:33
    0 41 93
  • txvlog com糖心改变你的生活,让你的心情更加甜蜜!

    txvlog com糖心是一款以视频分享为主的社交APP,可以让用户上传自己的视频,并与其他用户进行互动。它的主要功能有:用户注册:用户可以通过手机号码、邮箱地址或者社交媒体账号注册,并设置自己的个人信息;…

    2023-01-10 05:08:15
    0 17 59
  • chigo空调遥控器操作老式:如何使用Chigo空调遥控器操作老式空调

    Chigo空调遥控器操作老式,主要有以下几步:首先准备好Chigo空调遥控器,打开电源,将遥控器与空调连接;…

    2023-01-23 01:53:07
    0 61 54
  • cvte在线测评:如何利用CVTE在线测评提升职业能力?

    cvte在线测评是一款在线编程测评系统,它可以帮助用户快速、准确地评估学生的编程能力。它支持多种编程语言,并且提供了完善的测试环境,可以有效地检测出学生编程中的错误,同时还可以提供可视化的报告,帮助用户更好地理解学生的编程能力。…

    2023-01-27 15:11:58
    0 77 99

发表评论

登录 后才能评论

评论列表(1条)