`
beagoodboy
  • 浏览: 97015 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论
阅读更多
CAP定理指在设计分布式系统时,一致性(Consistent)、可用性(Availability)、Partition Tolerance(分区容忍性)三个属性不可能同时满足,该定理也叫做布鲁尔定理。CAP定理明确了分布式系统所能实现系统的局限性,目前互联网中的很多分布式系统是基于首要满足可用性和分区容忍性而设计的。在这里,不打算提及目前火热的Cassandra、Voldemort等分布式存储系统,而是打算介绍一下CAP定理。

形式化描述
一致性:所有在分布式系统上的操作有一个总体上的顺序,每一个操作看起来就像是在一个单独的瞬间完成的。这就要求分布式系统的运行就像是在一个单节点上一样,在一个时间响应一个操作。

可用性:对于一个可用性的分布式系统,每一个非故障的节点必须对每一个请求作出响应。也就是,该系统使用的任何算法必须最终终止。当同时要求分区容忍性时,这是一个很强的定义:即使是严重的网络错误,每个请求必须终止。

分区容忍性:为了定义分区容忍性,假定网络满足如下条件:网络是可能丢失从一个节点发往另一个节点的任意消息,当网络被分区(隔断)时,所有从一个分区的节点发往另一个分区的消息将会丢失。一致性要求每个响应必须是一致的,即使系统内部的消息没有被正确地发送。可用性要求从客户端接收请求的任一节点必须被响应,即使任意的消息可能没有被正确地发送。

异步网络
在异步网络模型中,没有统一时钟,所有节点仅根据接收到的消息和本地的计算进行决策。
定理一:
在一个异步网络模型中,没有可能实现一个满足以下属性的读写数据对象:
1、可用性
2、一致性
对于所有对等运算(包括消息会丢失的)
证明:
假设存在一个算法A满足这些条件:一致性、可用性、分区容忍性。我们构造一次A的执行,包括一个返回非一致结果的请求。假设网络包含至少两个节点,那么它可以被分为不相关的非空集合:{G,H}。假设所有G和H之间的通讯消息都丢失,这是可能的。如果这时在G上有一个写操作,接着H上有一个读操作,那么读操作将无法返回早些的写操作。■
推论一:
在一个异步网络模型中,没有可能实现一个满足以下属性的读写数据对象:
1、可用性,所有对等运算
2、一致性,所有对等运算,但消息不会丢失
证明:
主要问题是在异步网络模型中一个算法没有办法去判断一个消息是否丢失或者在传输通道中被延迟。因此,如果在运算中不会丢失任何消息的前提下存在一个能够保证一致性的算法,那么该算法也能够在所有运算(消息可能丢失)情况下保证一致性。这将与定理一矛盾。■

部分同步网络
假设一个部分同步的网络模型,在这里,所有的节点都有一个时钟,并且所有的时钟以一个相同的速度增长。然而,这些时钟并不是同步的,在相同的时间,它们显示不同的时间值。事实上,时钟扮演计时器的角色:处理器可以根据本地状态变量去衡量流逝了多少时间。一个本地的计时器可以用来调度某事件之后的多长时间间隔进行另一个操作。进一步地,假设每一个消息要么在给定的时间s内到达,要么丢失。并且,所有的节点在给定时间t内处理完一个接收到的消息。
定理二:
在一个部分同步网络模型中,没有可能实现一个满足以下属性的读写数据对象:
1、可用性
2、一致性
对于所有对等运算(包括消息会丢失的)
证明:
证明方法与定理一一样。■
但是在部分同步模型中,类似与异步模型推论一的结论就不存在了,因此推论一的假设基于节点无法判断一个消息是否丢失。而在部分同步模型中,存在部分同步算法可以在所有消息传送正常的情况下返回一致性的数据,而仅仅在消息丢失时返回非一致性数据。对于读或写请求,节点发送一个消息给另一个节点,如果消息返回了,那么节点发送请求的数据;如果消息在给定的2s+t时间内没有返回,那么该节点断定消息丢失了,节点就可能返回一个不一致的请求数据。

理论参考价值
在Google使用廉价的PC机搭建了强大的、高可靠的计算和存储平台之后,互联网公司一致性地选择使用PC集群支撑全部的业务,这个理论指明了实现满足可用性、分区容忍性的分布式系统是可行的,并且该分布式系统在没有故障的情况下可以提供良好的一致性读写。

参考
Lynch, Nancy, and Seth Gilbert. “Brewer's conjecture and the feasibility of consistent, available, partition-tolerant web services.” ACM SIGACT News, v. 33 issue 2, 2002, p. 51-59.
分享到:
评论

相关推荐

    掌握 CAP 定理,以及每个的含义和 CAP 定理的应用.docx

    理解CAP定理有助于开发者在设计分布式系统时做出权衡,确保系统的稳定性和可靠性。 1. 一致性(Consistency) 一致性保证了系统在任何时刻,所有节点的数据都是相同的,客户端无论从哪个节点读取,都能得到最新的...

    Brewer’CAP原理--CAP定理

    CAP定理指在设计分布式系统时,一致性(Consistent)、可用性(Availability)、Partition Tolerance(分区容忍性)三个属性不可能同时满足,该定理也叫做布鲁尔定理。CAP定理明确了分布式系统所能实现系统的局限性...

    CAP定理的详细讲述

    ### CAP定理详解 CAP定理,全称为一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance),是分布式计算领域中的一个关键概念,由Eric Brewer于2000年首次提出,并在2002年由Seth Gilbert和...

    jinghongdaxiong#Grokking-System-Design#CAP定理1

    CAP定理认为,在设计分布式系统时,我们只能选择以下两种:一致性: 所有节点在同一时间看到相同的数据。但是,如果网络中有一个分区,那么在客户机从最新的分区中读取

    elgchat#elgchat#分布式CAP定理1

    1.商品服务写入主数据库成功, 则想从数据库查询数据也成功 2.商品服务写入主数据库失败,则向从数据库查询也失败 1. 写入主数据库后要数据同步到从数据库 2.

    Brewer's CAP Theorem

    ### 布鲁尔的CAP定理:分布式系统的关键原则 #### 标题与描述解析 **标题**:“布鲁尔的CAP定理” **描述**:“布鲁尔的CAP定理” 这两个简短的信息指代了分布式计算领域的一个核心概念——布鲁尔的CAP定理。...

    分布式论文:CAP Twelve Years Later: How the ‘Rules’ Have Changed

    - **CAP定理的局限性**:Brewer指出,虽然CAP定理禁止了在存在分区情况下同时实现完美一致性和可用性的设计方案,但这种极端情况实际上很少见。因此,设计者在实际应用中通常有更大的灵活性来处理分区和恢复。 - **...

    2013年中国数据库大会-11-NoSQL一致性实践:我对CAP的一点认识

    在中国数据库大会-11的演讲中,童家旺深入探讨了NoSQL一致性实践以及对CAP定理的理解。CAP定理,又称布鲁尔定理(Brewer's Theorem),由加州大学伯克利分校的计算机科学家Eric Brewer提出,它指出在分布式计算系统...

    (8)Perspectives on the CAP Theorem.pdf

    在CAP定理中,一致性通常指的是线性一致性或强一致性,即当一个客户端对数据进行修改后,其他所有客户端都能立即看到这个修改。例如,银行转账操作需要确保账户余额的即时更新,以保证全局一致性。 2. **可用性 ...

    A Critique of the CAP Theorem

    《CAP定理批判》 CAP定理,全称为Consistency、Availability、Partition Tolerance,是分布式系统设计中的一个基础理论,由Eric Brewer在2000年提出。它指出,在分布式系统中,不能同时保证一致性(Consistency)、...

    CAP Twelve Years Later——How the 'Rules' Have Changed

    在IT行业中,CAP定理是分布式系统设计中的一个基础理论,由计算机科学家Eric Brewer提出。这个理论在2012年被再次讨论,探讨了在技术发展的十二年后,“规则”如何变化。CAP定理,全称是Consistency、Availability、...

    CAP Twelve Years Later: How the“Rules” Have Changed

    CAP 定理由埃里克·布鲁尔(Eric Brewer)于 2000 年提出,它指出在网络分区的情况下,任何共享数据的分布式系统最多只能同时实现一致性(C)、可用性(A)和分区容忍性(P)这三个属性中的两个。这一理论为分布式...

    Eric Brewer:CAP Twelve Years Later——How the 'Rules' Have Changed

    标题中的“Eric Brewer:CAP Twelve Years Later——How the 'Rules' Have Changed”指的是计算机科学家Eric Brewer在2012年提出的一个主题,讨论了CAP定理在十二年后的发展和变化。CAP定理是分布式系统设计中的一个...

    cap原理

    在CAP定理中,一致性意味着系统能够保证数据的完整性,即在所有节点间保持一致的状态。 ### 2. Availability(可用性) 可用性指的是分布式系统能够在任何非故障的情况下,保证每个请求都能收到一个(不一定是最新...

    Distributed system: CAP paper

    在分布式系统的设计中,CAP定理是一个至关重要的概念,它指导了系统在面临网络分区时如何平衡一致性、可用性和分区容错性这三者之间的权衡。 CAP定理由Eric Brewer教授在2000年提出,其全称是Consistency(一致性)...

    Spanner, TrueTime & the CAP Theorem

    《Spanner, TrueTime & the CAP Theorem》这篇文章聚焦于Google的分布式数据库系统Spanner、时间同步技术TrueTime以及在分布式系统中广泛讨论的CAP定理。这些是现代大规模分布式计算环境中的核心概念,尤其在Java...

    分布式系统CAP

    ### 分布式系统CAP定理解析 #### 一、引言 在当今信息化时代,随着互联网技术的迅猛发展,分布式系统已经成为解决大规模数据处理和高并发访问问题的关键技术之一。在构建分布式系统的过程中,如何平衡数据一致性...

    CAP实现方案

    CAP定理是计算机科学领域的核心理论之一,它指出在一个网络分布式系统中,一致性(Consistency)、可用性(Availability)和分区容忍性(Partition tolerance)三者不可兼得,最多只能同时满足其中的两项。...

    Brewer’s CAP Theorem

    **布林格的CAP定理**是分布式系统设计中的一个基础理论,由计算机科学家Eric Brewer在2000年提出。这个理论指出,在一个分布式计算系统中,无法同时保证一致性(Consistency)、可用性(Availability)和分区容错性...

    Time, Clocks, and the Ordering of Events in a Distributed System

    ### 分布式系统中的CAP定理 #### 一、引言与背景 随着互联网技术的发展,分布式系统在当今社会的应用越来越广泛。为了更好地理解和设计这些系统,计算机科学家们提出了多种理论模型来指导实践。其中,CAP定理是...

Global site tag (gtag.js) - Google Analytics