区块链中的 CAP 定理

2025 年 4 月 9 日 | 9 分钟阅读

根据 CAP 定理,分布式数据存储无法同时提供一致性、可用性和分区容错性这三个保证中的两个以上。本教程重点详细解释区块链中的 CAP 定理。

区块链:它是什么?

区块链技术是一种数据存储技术,它使得系统操纵、黑客攻击和欺诈变得困难或不可能。 在区块链上,这是一种分布式账本技术 (DLT),交易使用哈希(本质上是无法更改的数字签名)进行记录。

区块链简单来说就是一系列相互连接的计算机系统,它们能够在网络数字账本上维护和分发每个交易的多个副本。链上的每个区块都由多个交易组成,每次区块链上发生新交易时,都会将其记录添加到每个参与者的账本中。“分布式账本技术 (DLT)”指的是一个由多人管理的去中心化数据库。

区块链的重要性

区块链技术可以创建一个完全安全的去中心化系统。一方进行的任何交易都只有在另一方授权后才能执行。交易确认后,两个账本都会立即更新,从而降低了欺诈的可能性。

这使得各方之间的沟通畅通无阻,并促进了有效的业务运营。正因为如此,零售、媒体和娱乐、能源以及银行等广泛的行业都使用区块链技术。

区块链的 CAP 定理意味着什么?

CAP 定理是 Consistency(一致性)、Availability(可用性)和 Partition Tolerance(分区容错性)的首字母缩写。根据该理论,分布式系统可能无法始终提供一致性、可用性和分区容错性。我们必须优先考虑不超过两个分布式系统特性,并在出现问题时在它们之间进行权衡。能力可用性对等定理,也称为 Brewer 定理,是一个关于分布式数据存储的理论计算机科学定理,它指出在分布式数据库出现网络中断的情况下,可以保证一致性或可用性,但不能两者兼得。换句话说,CAP 定理强制经历分区问题的分布式数据库系统在一致性和可用性之间做出选择。

在分布式系统中,我们必须在多个节点之间存储数据,并同时通过网络进行交互。由于分布式系统严重依赖网络调用,因此它通常容易受到网络故障的影响。具有分区容错性非常重要。在这种情况下,我们必须根据我们的需求选择是一致性更重要还是可用性更重要。对于区块链技术,分区容错性和可用性通常以牺牲即时一致性为代价。区块链共识技术通过指定最少数量的“确认”来降低到最终一致性。

由于网络故障可能会影响任何分布式系统,因此通常需要进行网络分区。如果发生分区,只剩下一致性和可用性可供选择。如果优先考虑一致性而不是可用性,并且由于网络分段而无法保证某个特定信息是最新的,则系统将超时或产生错误。即使网络分区使得系统无法保证数据是最新的,并且可用性优先于一致性,系统也总是会执行查询并尝试返回信息的最新版本。区块链是一个去中心化数据库,它维护一个不可变的共享账本。共享账本由交易组成。共享账本中的交易使用共识过程进行记录。自然地,共享分布式交易会引发有关 CAP 定理的疑问。区块链技术优先考虑分区容错性和可用性,而不是一致性。在这种情况下,区块链的分区容错性 (P)、可用性 (A) 和一致性 (C) 并非同时获得;相反,它们是逐步实现的。

CAP 定理的历史

  • 根据加州大学伯克利分校计算机科学家 Eric Brewer 的说法,这个假设最初于 1998 年秋季浮出水面。作为一种猜想,Brewer 在 2000 年的分布式计算原理研讨会上提出了它。
  • Brewer 的猜想于 1999 年首次以 CAP 原理的形式发表。在麻省理工学院的 Nancy Lynch 和 Seth Gilbert 于 2002 年提供了正式证据后,该猜想变成了定理。由于 Eric A. Brewer 教授于 2000 年在一次关于分布式计算的演讲中首次提出了 CAP 定理,因此它也被称为 Brewer 定理。两年后,麻省理工学院的 Seth Gilbert 和 Nancy Lynch 教授提出了支持“Brewer 猜想”的证据。
  • 2012 年,Brewer 澄清了他的一些观点。他说,广为接受的“三选二”理论可能有些误导,因为分区管理和恢复技术已经到位,这意味着系统设计者只需要在存在分区时放弃一致性或可用性。Brewer 还讨论了ACID(原子性、一致性、隔离性、持久性)概念与 CAP 定理中关于一致性的概念之间的区别。
  • 自 CAP 定理十年前首次提出以来,研究人员和设计人员已将其用于研究各种新型分布式系统。NoSQL 运动也利用它来反驳传统数据库。CAP 的部署实现了让设计人员接触更广泛的系统和权衡的目标;事实上,在过去的十年中,关于一致性和可用性相对优势的激烈讨论催生了各种新型系统。
  • “三选二”的表述总是具有误导性,因为它倾向于过度简化特性之间的紧张关系。这些复杂性现在变得很重要。CAP 只禁止在极少数没有分区的情况下实现完全可用性和一致性,而这只占设计领域的一小部分。

区块链的 CAP 定理

既然我们已经知道 CAP 代表一致性、可用性和分区容错性,那么让我们通过一些例子来进一步探索这些概念。如果我们首先掌握可用性,那么理解一致性和分区容错性就会简单得多。

  1. 可用性
    当一个或多个节点不可用时,可用性表示所有请求数据的客户端仍然会收到响应。换句话说,在分布式系统中,每个操作节点都会响应发送给它的每个合法请求。
    例如,假设您是社区中一家知名汽车制造商的客户,因为它提供了令人惊叹的优惠和服务。他们还提供出色的客户服务,因此您可以就任何疑问或问题联系他们并获得及时答复。每个致电汽车公司的客户都可以联系到其客户服务代理之一。客户可以访问他需要的有关其汽车的任何信息,包括保险计划、维修日期和其他详细信息。我们称之为可用性,因为任何客户都可以连接到公司或其运营商并获取有关用户或客户的详细信息。
  2. 一致性
    当重复数据项一致时,它会以相同的副本出现在跨多个事务的每个节点上(保证分布式集群中的每个节点提供相同的、最新的和成功的作者)。要使数据被视为一致,每个客户端对信息的解释必须一致。在 CAP 中,一致性指的是顺序一致性,一种特别强有力的一致性。
    例如,您希望为您的汽车续保或获得新的保险,因为它最近已过期。您选择通过电话向银行或保险公司更新它。当您打电话时,一位代理接听了电话。这位代理要求您提供以前保单的相关信息。但是,挂断电话后,您发现有一个小细节被忽略了。于是,您又紧急给代理打了个电话。然而,当您再次打电话时,您与另一位代理交谈,他们也能够检查您的信息,并且知道您正在办理新的保险计划。家庭电话号码已相应更改,其余地址与您提供给前一位接线员的相同。我们称之为一致性,因为您与之交互的客户服务代表尽管连接发生了变化,但仍能获取相同的数据。
  3. 分区容错性
    在分布式系统中,通信中断(节点之间连接的短暂暂停或丢失)称为分区。集群即使在系统节点之间存在许多通信故障的情况下也能继续运行的能力称为分区容错性。
    例如,由于您不经常使用您的汽车,而且它又旧又过时,因此您必须不幸地将其出售。然后,您在在线平台出售汽车后联系买家,列出了汽车的每个细节。他开始谈判,因为他想完成协议过程并获得您的汽车。但是,您无法签署协议,因为谈判不是双方同意的。因此,我们可以得出结论,在这种情况下没有分区容错性,或者协议已中断。

CAP 假设 NoSQL 数据库的类型

NoSQL 与高可用性和一致性不兼容。Eric Brewer 在他的 CAP 定理中首次提出了这一点。只能满足数据库保证中的三个中的两个:一致性、可用性和分区容错性。了解 NoSQL 数据库的局限性至关重要。

下图显示了数据库 CA 如何连接一致性和可用性,数据库 AP 如何连接可用性和分区容错性,以及数据库 CP 如何连接一致性和分区容错性。下面我们来讨论 CA、AP 和 CP 的含义。

CAP Theorem in Blockchain
  • CA 数据库在所有节点上提供一致性和可用性。但是,如果在任何两个系统节点之间存在分区,则无法实现容错。例如,银行和金融等应用程序需要可靠且易于访问的数据。
  • AP 数据库确保即使节点出现故障,系统也能继续运行。依赖 AP 的系统会失去一致性和可用性。像 PostgreSQL 这样的非分布式数据库使用基于 AP 的数据库系统。
  • CP 数据库表示即使数据库内发生网络故障,系统也能继续运行。虽然 CP 系统表现出很高的一致性,但它们的可用性不足。
  1. 可用性高于一致性 (A+P)
    当可用性优先于一致性时,系统将始终处理查询并尝试返回数据的最新版本,即使网络分区阻止它保证数据是最新的。
    在收集数据至关重要时,可访问性至关重要。在这种情况下,考虑用户偏好或行为数据等变量。在这些情况下,捕获尽可能多的有关用户或客户活动的信息非常重要,但持续更新数据库并非必不可少。网络连接需要始终可达和可用。离线应用程序使用需求不断增长是使用优先于一致性的 NoSQL 数据库的另一个理由。
  2. 一致性高于可用性 (C+P)
    在讨论一致性和可用性时可能会使用许多技术术语,但基本原理很简单:如果数据库的数据必须始终保持最新和一致,即使在网络中断的情况下,一致性也是必需的。
    当多个客户端需要相同的数据视图时,一致性是一个应优先考虑的用例。例如,在处理财务或敏感数据时,请使用提供一致性并保证您正在查看的数据是最新的数据库,如果网络不稳定或出现故障。
    例如,银行账户信息很重要,因此它需要准确且一致。因此,如果最新的信息不可用,最好声明中断,而不是向客户提供错误的信息。

为什么区块链违反了 CAP 定理?

  • 区块链公然违反了 CAP 定理。如前所述,分区容错性和可用性都是“创收”特性。
  • 如果区块链系统变得不可用,依赖它的企业将开始蒙受损失。换句话说,新的交易(例如企业之间的资金转移)必须在提交后立即记录在区块链节点上。
  • 如果区块链不存在,则新的交易将丢失。出于这个原因,区块链打破了 CAP 定理。

PACELC 定理

根据 PACELC 定理,“即使系统在没有分区的情况下正常运行,也必须在延迟 (L) 和一致性 (C) 之间进行选择,否则 (E)。” 基于 CAP 定理,PACELC 定理对其进行了扩展和构建。CAP 定理的缺点包括它缺少三个选择,并且无法明确区分 CA 和 CP。它们也被用作忽略规律性的理由。

CAP 定理的一个根本缺陷是它忽略了延迟和性能。这导致了 PACELC 的创建。PACELC 定理通过演示系统可能倾向于高度一致性或延迟敏感性来扩展 CAP 定理范式(模式)的应用。

结论

区块链对于记录不可篡改的数据很有用;但是,它不适合记录需要立即记录的数据。CAP 定理和区块链仍在争论中。对于任何尝试区块链技术的专业人士,例如区块链开发人员,了解哪些说法是错误的,哪些不是,变得至关重要。