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

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

(694)
在Microsoft365管理中心中部署OfficeWeb加载项
上一篇
罗马数字和弦随机和弦发生器错误(chord generator)
下一篇

相关推荐

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

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

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

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

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

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

    2023-01-27 12:23:25
    0 51 38
  • cv人生履历:从零开始,一步步走向成功——[姓名]的职业生涯

    cv人生履历是一种概括性的文件,用于描述一个人的教育背景、工作经历、技能、专业知识和其他重要信息的文件。它可以帮助雇主评估求职者的资格,并决定是否面试或录用他们。…

    2023-02-01 13:25:09
    0 81 27
  • contextcapture集群:如何使用ContextCapture技术构建高效的3D集群

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

    2023-01-05 08:03:52
    0 52 39
  • cdb文件解锁您的数据库

    CDB文件是一种关联数据库文件格式,用于存储结构化的键/值数据。它是一种高效的文件格式,可以快速检索和更新数据。它可以用作存储用户配置文件,字典,索引,缓存等。…

    2023-02-04 07:44:32
    0 55 14
  • code128条码字体下载:使用 Code128 条码字体创建条码标识

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

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

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

    2023-01-10 05:08:15
    0 13 24

发表评论

登录 后才能评论

评论列表(36条)