分布式-CAP定理

article/2025/9/24 15:53:49

在分布式学习中,我们经常遇到一个概念便是CAP,它是分布式很重要的理论基础。很多分布式算法也是在不断的在解决相关问题,今天就让我们重新学习或者回顾一下这个知识点吧,加深印象打牢基础。

一、简介

CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),由计算机科学家 Eric Brewer 在 2000 年分布式计算原理研讨会上提出。这三个值指的是分布式系统的中,一致性 (Consistency),可用性 (Availability),P代表分区容错性 (Partition tolerance)。CAP理论告诉我们C、A、P三者不能同时满足,最多只能满足其中两个。

note: CAP 定理中定义的一致性与 ACID 数据库事务中保证的一致性完全不同。

1.1. Consistency(一致性):
描述: "all nodes see the same data at the time".
解释:即更新操作成功返客户端后,所有节点在同一时间的数据是完全一致的,这就是分布式的一致性(强一致,由于一致性的类别特别多,希望读者在阅读是进行详细区分这样便于理解)
介绍: 一致性的问题在并发系统中不可避免,对于客户端来说,一致性指的是并发访问是更新过的数据如何获取的问题。从服务端来说,则是更新的数据如何同步到分布式的整个系统中,以保证任何时刻返回的数据的一致。

1.2.Availability(可用性):
描述:"Reads and wirtes always succeed".
解释:即服务一直可用,而且是正常的响应时间。
介绍: 我遇到很多人,在这点上只知道服务的可用,却忽略了正常的响应时间。希望读者在这一点上切记。好的可用性主要指系统能够很好的为用户服务,不出现用户操作失败或者访问超时等不好的用户体验情况。

1.3 Partition tolerance(分区容错性):
解释: 分布式系统在某个节点或者网络分区故障的时候,依然能够堆外提供满足一致性或可用性的服务。
介绍: 尽管节点之间的网络丢弃(或延迟)任意数量的消息,系统仍继续运行。当网络被分区时,从分区的一个组件中的节点发送到另一个组件中的节点的所有消息都将丢失。比如现在的分布式系统中有某一个或几个机器宕机了,其他剩下的机器还能正常运行满足系统需求,对用户而言并没有什么使用上的影响。

二、CAP 三选二

下面举个例子,也方便大家理解为什么CAP只能三选二。

案例:
理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。

在存在分区的情况下,剩下两个选项一致性和可用性。
AP(Availability and Partition tolerance):当可用性高于一致性时,系统将始终处理客户端请求并尝试返回最新可用版本的信息,即使由于网络分区而无法保证它是最新的.

CP(一致性和分区公差):如果选择一致性而不是可用性,则系统将返回错误或超时,如果由于网络分区或故障而无法更新到其他节点,则该系统将返回错误或超时。

三、深入理解CAP

引用: Eric Brewer argues that the often-used "two out of three" concept can be somewhat misleading because system designers only need to sacrifice consistency or availability in the presence of partitions, but that in many systems partitions are rare。

解释:
Eric Brewer认为,经常使用的“三分之二”概念可能会有些误导,因为系统设计人员只需要在存在分区的情况下,牺牲一致性或可用性,但在许多系统中分区很少见。

介绍:
CAP 定理经常被误解为必须始终在三个保证中选择两个。实际上,只有在网络分区或发生故障时,才需要在一致性和可用性之间进行选择。在没有网络分区或网络故障的情况下,可以同时满足可用性和一致性。即一致性和可用性并不是水火不容,非此即彼的。Paxos、Raft等分布式一致性算法就是在一致性和可用性之间做到了很好的平衡的见证。
关于Paxos的内容,读者可以阅读“分布式算法-Paxos”。

四、参考引用

  1. https://en.wikipedia.org/wiki/CAP_theorem
  2. https://pdai.tech/md/dev-spec/spec/dev-th-cap.html
  3. https://zh.m.wikipedia.org/zh-hans/CAP%E5%AE%9A%E7%90%86

http://chatgpt.dhexx.cn/article/p4HA5Kj3.shtml

相关文章

佳文分享:CAP定理

1976年6月4号,周5,在远离音乐会大厅的一个楼上的房间内,在位于Manchester的Lesser Free Trade Hall ,Sex Pistols 乐队(注:Sex Pistols的经理人Malcolm McLaren 2010.4.8去世)开始了他们的第一次…

谈谈对CAP定理的理解

谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二。这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正。 从问题出发 假设…

分布式系统的 CAP 定理

CAP定理指出,在一个分布式系统中,对于一致性、可用性、分区容错这三个特性,不可能同时满足,而是必须有所舍弃。我们设计分布式系统时,必须在三者之间(尤其是一致性和可用性之间)有所取舍和平衡。…

简述CAP定理

CAP定理示意图: 一.CAP理论概述: CAP定理告诉我们,一个分布式系统不可能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求&…

CAP定理的含义

目录 定理解读 如何抉择 1998年,加州大学的计算机科学家 Eric Brewer 提出了分布式系统的三个指标: C:Consistency,一致性。在分布式系统中的所有数据备份,在同一时刻具有同样的值,所有节点在同一时刻读…

CAP定理是什么?

写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和文献引用请见100个问题搞定大数据理论体系 解答 分布式系统不…

分布式CAP定理,为什么不能同时满足三个特性?

在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理。 根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、P…

AMBA总线理解-AXI总线

AXI的设计目标是可以在高始终频率下运行,并且在迟滞时间长的情况下也可以达到高数据吞吐率。他可以将读/写请求和读/写结果相互分离,将数据写入和数据读出的信号分类,并且可以同时进行写入和读出的动作,因此可以大幅度提升数据吞吐…

Zynq AXI总线

S02_CH12_ AXI_Lite 总线详解 - 米联客 - 博客园 12.1前言 ZYNQ拥有ARMFPGA这个神奇的架构,那么ARM和FPGA究竟是如何进行通信的呢?本章通过剖析AXI总线源码,来一探其中的秘密。 12.2 AXI总线与ZYNQ的关系 AXI(Advanced eXtens…

AXI总线协议介绍

AXI总线协议介绍 AXI(Advanced eXtensible Interface)协议是一种面向高性能、高带宽系统设计的总线协议,能够满足各种高速系统的总线协议,能够满足各种高速系统的总线互连。 AXI协议的主要特点有: 独立的地址,控制和数据接口支持使用字节选通的不对齐数据的传输基于特定地…

AXI总线入门

介绍【只要涉及到芯片内部交换都是涉及到AXI协议】 ZYNQFPGAARM 两者间的数据传输 AXI(Advanced extensible Interface)高级外设总线协议,协议是一种通用总线协议,AXI协议是ARM AMBA(Advanced Microcontroller Bus Arc…

AXI 总线协议学习笔记(4)

引言 前面两篇博文从简单介绍的角度说明了 AXI协议规范。 AXI 总线协议学习笔记(2) AXI 总线协议学习笔记(3) 从本篇开始,详细翻译并学习AXI协议的官方发布规范。 AXI总线协议,是一个处于不断发展和完…

浅谈AXI总线

这篇博客在写之前借鉴了网上各位大佬对AXI总线的理解和总结,在此表示感谢。集合了博客,知乎以及书上对AXI总线的介绍。做以下记录用于自己日后复习和更好的理解。 1:协议简介 Xilinx fpga 从Virtex-6系列开始,内部IP都支持AXI4总…

AXI总线整理总结

AXI总线 一、Definition 嵌入式系统是当今计算机工业发展的一个热点,随着超大规模集成电路的迅速发展,半导体工业进入深亚微米时代,器件特征尺寸越来越小,芯片规模越来越大,可以在单芯片上集成上百万到数亿只晶体管。…

AXI 总线协议学习笔记(3)

引言 上篇文章主要介绍了 AMBA以及AXI协议的基本内容,本文接续前文,继续介绍AXI协议的 原子访问、传输行为和事务顺序等。 AXI 总线协议学习笔记(2)https://blog.csdn.net/qq_43045275/article/details/128824643 原子访问 原子…

AXI总线总结

目录 1 综述 2 AXI通道概述 2.1 综述 2.2 读地址与写地址通道 2.3 读数据通道 2.4 写数据通道 2.5 写响应通道 3 AXI互联结构 4 AXI中使用寄存器切片 5 AXI术语 5.1 AXI组件与拓扑 5.2 AXI传输与存储器类型 6 AXI信号描述 6.1 公共信号 6.2 写地址通道信号 6.3…

AXI总线

AXI总线 AXI总线简介 AXI总线是一种总线协议,是ARM公司提出的AMBA3.0协议(目前已AXI4已发布) 中的最重要的部分,是一种高性能、高带宽、低延时的片内总线。支持不对齐的数据传输和突发传输。在突发传输中只需要首地址,并且支持同时分离的读…

SoC设计与验证——总线篇——AXI总线

1. AXI总线特征 axi总线可以连接CPU的cache和其他外设,比如内存等。内存是从属设备,它接受信号,并驱动ready信号;主从设备都会驱动data信号,总线仲裁器只看request和grant信号,而忽略所有的其他信号。 详…

AXI总线简介

0.绪论 AXI是高级扩展接口,在AMBA3.0中提出,AMBA4.0将其修改升级为AXI4.0。AMBA4.0 包括AXI4.0、AXI4.0-lite、ACE4.0、AXI4.0-stream AXI4.0-lite是AXI的简化版本,ACE4.0 是AXI缓存一致性扩展接口,AXI4.0-stream是ARM公司和Xilinx公司一起提出,主要用在FPGA进行以数据为主…