返回介绍

CAP 定理 (CAP Theorem or Brewer's Theorem)

发布于 2024-08-19 12:55:15 字数 1312 浏览 0 评论 0 收藏 0

CAP 定理由 Eric Brewer 所定义,它指出对于分布式数据存储来说,不可能同时满足以下三点:

  • 一致性 (Consistency):在读取数据时,每个请求都会接收到 最新的 数据,或者返回错误。
  • 可用性 (Availability): 在读取数据时,每个请求都会接收到一个 非错误的响应,但不能保证该数据是 最新的 数据。
  • 分区容错性 (Partition Tolerance):当节点之间任意数量的网络请求失败时,系统能按预期继续运行。

核心论证如下:因为无法保证不会存在网络分区(参见分布式计算的谬论 (The Fallacies of Distributed Computing)),所以在分区的情况下,我们可以选择取消当前操作(增加一致性并降低可用性),或者选择继续进行该操作(增加可用性降低一致性)。

该定理的名字来源于一致性 (Consistency)、可用性 (Availability)、分区容错性 (Partition Tolerance) 的首字母。请注意,这与 ACID 没有任何关系,因为其对一致性有另一种定义。最近发展出来的 PACELC 定理与 CAP 定理相比,增加了对网络 分区时(即系统按预期操作时)的延迟和一致性的约束。

大多数的现代数据库平台会通过向数据库用户提供选项的方式,来选择是需要高度可用的操作(比如“脏读 (dirty read)”),还是高度一致的操作(比如“法定确认写写入 (quorum acknowledged write)”)——这间接地承认了这一定理。

现实世界的例子:

  • Inside Google Cloud Spanner and the CAP Theorem - 该文详细介绍了 Cloud Spanner 是如何工作的,表面上该平台似乎能够保证 CAP 三者,但实际上依然是一个 CP 系统,即只有一致性和分区容错性。

参见:

  • ACID
  • 分布式计算的谬论 (The Fallacies of Distributed Computing)
  • PACELC

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文