CAP原理

技术 · 2019-06-20
  1. 什么是CAP原理
  2. 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 Seth Gilbert 和 Nancy Lynch 从理论上证明了猜想的可能性,从此,CAP 理论正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展。

CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。
td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}选项描述C(Consistence)一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性)。A(Availability)可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。P(Network partitioning分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。

  1. 为什么只能3选2
    我们想象两个节点分别位于两个分区。

    1. 如果允许至少一个节点更新状态,那么就可能导致数据不一致,即违反了C
    2. 如果为了保证数据一致性,而关掉了一个节点,那又违反了A
    3. 如果既保证两个节点都可用,又保证了节点可以互通,那么就违反了P
  2. 疑问
    Q1:CAP哪个更重要呢?
    --现实场景中,P是不可或缺的,比如在中国和美国各有一台服务器,而两台服务器均是需要正常提供服务的,那么CA就只能二选一。
    --当然,如果是本地单机服务,不存在P的问题,那就可以保证CA了。
    Q2:既然只能三选二,一般如何选择呢
    --一般来说,首先要保证P,然后尽量保证A,至于C,可以使用最终一致性代替。image.png
Theme Jasmine by Kent Liao