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/

原文地址:https://www.cnblogs.com/Chenwangzhou/p/11119499.html