CAP理论 (分布式系统下的) 通俗理解

目录

一致性(C)

可用性(A)

分区容错性(P)

CAP定理(核心)

相互关系


CAP 理论是针对分布式数据库而言的,它是指在一个分布式系统中,一致性(Consistency, C)、可用性(Availability, A)、分区容错性(Partition Tolerance, P)三者不可兼得。

一致性(C)

一致性是指“all nodes see the same data at the same time”,即更新操作成功后,所有节点在同一时间的数据完全一致。

一致性可以分为客户端和服务端两个不同的视角:

  • 从客户端角度来看,一致性主要指多个用户并发访问时更新的数据如何被其他用户获取的问题;
  • 从服务端来看,一致性则是用户进行数据更新时如何将数据复制到整个系统,以保证数据的一致。


一致性是在并发读写时才会出现的问题,因此在理解一致性的问题时,一定要注意结合考虑并发读写的场景。

可用性(A)

可用性是指“reads and writes always succeed”,即用户访问数据时,系统是否能在正常响应时间返回结果。

好的可用性主要是指系统能够很好地为用户服务,不出现用户操作失败或者访问超时等用户体验不好的情况。在通常情况下,可用性与分布式数据冗余、负载均衡等有着很大的关联

分区容错性(P)

分区容忍性(Partition Tolerance,简称P)只有两个可选参数:不容忍和容忍。

CAP定理(核心)

C、A、P三者最多得二,因为是分布式系统,所以P必须满足,所以CA不可能同时满足。

比如两台机器A,B存放着一样的数据,满足P(分区容忍)。

如果要满足一致性,假如多个请求同时访问一个数据,其中一个请求修改了A中的数据data,此时有请求访问机器B,那么必然要通过信息传输将A机器中的data同步到机器B,这样就不是完全的可用性(访问B的时延为0)。

如果满足时延为0(可用性),那么返回的data一定不是最新的data。

所以一般会根据不同的场景做折中。比如要求你在一定时延内返回正确的数据。

相互关系

CAP 理论认为分布式系统只能兼顾其中的两个特性,即出现 CA、CP、AP 三种情况,如图所示。
 

CA without P

如果不要求 Partition Tolerance,即不允许分区,则强一致性和可用性是可以保证的。其实分区是始终存在的问题,因此 CA 的分布式系统更多的是允许分区后各子系统依然保持 CA。

CP without A

如果不要求可用性,相当于每个请求都需要在各服务器之间强一致,而分区容错性会导致同步时间无限延长,如此 CP 也是可以保证的。很多传统的数据库分布式事务都属于这种模式。

AP without C

如果要可用性高并允许分区,则需放弃一致性。一旦分区发生,节点之间可能会失去联系,为了实现高可用,每个节点只能用本地数据提供服务,而这样会导致全局数据的不一致性。

 

参考博文

cap理论具体含义_什么是CAP定理?_知乎职场的博客-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

trigger333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值