zoukankan      html  css  js  c++  java
  • CAP定理图解证明

    CAP定理的图解证明

    CAP定理是在分布式系统中的一个基本定理,指出任何分布式系统最多可以有两个以下三个属性。

    • ç onsistency
    • 一个 vailability
    • P artition tolerance

    本指南将总结 Gilbert和Lynch的规范以及 带有图片的CAP定理的证明

    什么是CAP定理?

    CAP定理指出分布式系统不能同时具有一致性,可用性和分区容错性。听起来很简单,但保持一致意味着什么?可用?分区容忍?哎呀,分布式系统究竟是什么意思?

    在本节中,我们将介绍一个简单的分布式系统,并解释该系统可用,一致和分区容忍的含义。有关系统和三个属性的正式描述,请参阅 Gilbert和Lynch的论文

    分布式系统

    G 1G1G 2G2vvv 0v0G 1G1G 2G2

    客户端可以请求从任何服务器进行写入和读取。当服务器收到请求时,它会执行它想要的任何计算,然后响应客户端。例如,这是写的样子。

      

    这就是读取的样子。

     

    现在我们已经建立了系统,让我们回顾一下系统的一致性,可用性和分区容忍性意味着什么。

    一致性

    以下是Gilbert和Lynch描述一致性的方法。

    在写操作完成后开始的任何读操作都必须返回该值,或者后续写操作的结果

    在一致的系统中,一旦客户端将值写入任何服务器并获得响应,它就希望从它读取的任何服务器返回该值(或更新的值)。

    以下是不一致系统的示例

       

    v 1v1G 1G1G 1G1G 2G2v 0v0

    另一方面,这是一个一致 系统的例子

          

    G 1G1G 2G2G 2G2vvv 1v1

    可用性

    以下是Gilbert和Lynch描述可用性的方法。

    系统中非故障节点收到的每个请求都必须产生响应

    在可用系统中,如果我们的客户端向服务器发送请求并且服务器未崩溃,则服务器必须最终响应客户端。不允许服务器忽略客户端的请求。

    分区容差

    以下是吉尔伯特和林奇描述分区的方法。

    允许网络丢失从一个节点发送到另一个节点的任意多条消息

    G 1G1G 2G2

    尽管有任意网络分区,我们的系统必须能够正常运行才能实现分区容错。

    证据

    现在我们已经熟悉了一致性,可用性和分区容错的概念,我们可以证明系统不能同时拥有这三者。

    假设确实存在一致,可用和分区容忍的系统。我们要做的第一件事是分区我们的系统。看起来像这样。

    v 1v1G 1G1G 1G1G 1G1G 2G2α 1α1

      

    G 2G2G 2G2G 2G2G 1G1v 0v0α 2α2

     

    G 2G2v 0v0v 1v1G 1G1

    我们假设存在一个一致的,可用的分区容忍系统,但我们只是表明存在执行系统不一致的任何此类系统。因此,不存在这样的系统。

    来自:https://mwhittaker.github.io/blog/an_illustrated_proof_of_the_cap_theorem/

  • 相关阅读:
    Python与Flask
    Python与MySQL
    range,map,sum
    Java:初始化类、变量、程序块加载解析
    HTML_记录2
    HTML_记录1
    查看当前连接的实例名
    expdp impdp
    行列转换
    oracle创建定时任务
  • 原文地址:https://www.cnblogs.com/Chenwangzhou/p/11119499.html
Copyright © 2011-2022 走看看