posts - 50,comments - 0,views - 20251

转载自:(原文为英文版)

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

CAP定理的图解证明

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

    • Consistency(一致性)
    • Availability(可用性)
    • Partition tolerance(分区容错性

本指南将通过图片总结 吉尔伯特和林奇的规范以及CAP定理的证明 !

什么是CAP定理?

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

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

分布式系统

让我们考虑一个非常简单的分布式系统。我们的系统由两台服务器组成,G1个G1个 和 G2G2这两个服务器都在跟踪相同的变量,vv,其值最初是 v0v0。 G1个G1个 和 G2G2 可以相互通信,也可以与外部客户端通信。这是我们的系统的外观。

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

  

这就是阅读的样子。

 

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

一致性

这是吉尔伯特和林奇描述一致性的方式。

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

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

这是一个不一致的系统的示例

    

我们的客户写道 v1个v1个 至 G1个G1个 和 G1个G1个 承认,但是当它从 G2G2,它将获取陈旧的数据: v0v0

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

       

在这个系统中 G1个G1个 将其值复制到 G2G2在向客户端发送确认之前。因此,当客户从G2G2,它将获得最新的值 vv: v1个v1个

可用性

这是Gilbert和Lynch描述可用性的方式。

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

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

分区容限

这是Gilbert和Lynch描述分区的方式。

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

这意味着任何消息 G1个G1个 和 G2G2可以互相发送。如果所有消息都被丢弃,那么我们的系统将如下所示。

为了容忍分区,我们的系统必须能够在任意网络分区下正常运行。

证据

既然我们已经了解了一致性,可用性和分区容限的概念,我们可以证明一个系统不能同时拥有这三个。

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

接下来,我们有客户要求 v1个v1个 被写到 G1个G1个由于我们的系统可用,G1个G1个必须回应。但是,由于网络是分区的,G1个G1个 无法将其数据复制到 G2G2吉尔伯特和林奇称之为执行阶段α1个α1个

  

接下来,我们让客户发出读取请求以 G2G2同样,由于我们的系统可用,G2G2必须回应。由于网络是分区的,G2G2 无法从中更新其值 G1个G1个它返回v0v0吉尔伯特和林奇称之为执行阶段α2α2

 

G2G2 退货 v0v0 客户写完之后给我们的客户 v1个v1个 至 G1个G1个这是不一致的。

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

posted on   HuairongChen  阅读(259)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示