CAP简介

参考《大数据日知录》

概念

CAP:Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容忍性)
CAP最初是由Eric Brewer提出,他证明了,在分布式数据系统中,CAP三要素不可能兼得,同时只能满足其中的两种。

单条解析

Consistency(一致性)

在分布式系统中,同一数据多副本的情况下,对于数据的操作能保证不会出现多份不同数据的情况。即多备份的场景与单份数据没有备份的场景,对数据的操作效果应当一样。

注意,一致性不仅仅是代表备份的数据需要与源数据保持一致。而是整个系统中要保证操作的是同一份数据。
举个例子,在主机向从机备份数据的时候,有用户直接向从机去拉取数据,如果此时从机在没有备份完主机数据的时候就返还数据,那么用户拿到的其实并不是最新的数据,这就没有保证一致性。
如果这是支付等一致性要求较高的场景,显然是不允许的。
但是如果这是小游戏、日志记录等一致性要求较低的场景,完全是可以牺牲一致性来换取可用性的。

Availability(可用性)

用户在分布式系统中的每个操作应当收到一个非错误的回应,简单来说要保证系统是一直能正常使用的。

就以支付为例,在一些异常情况下,是会有“支付失败”的问题的,这就是没有保证可用性,但是对于支付这种场景,牺牲可用性保证一致性是必须的。

Partition tolerance(分区容忍性)

分布式系统中任何机器都是可能断网或者宕机的,在这种情况下系统应该仍要能继续工作。

三者场景

CP(一致性+分区容忍性)

牺牲可用性,保证一致性,主要对于一些对一致性要求较高的场景。
比如支付,抢红包、用户数据记录等场景,

AP(可用性+分区容忍性)

牺牲一致性保证可用性,主要能提高用户体验,提高性能等。
比如日志记录,数据投递、存储系统配置等场景。

CA(一致性+可用性)

如果不保证分区容忍性,那么只要产生断网宕机等意外情况,系统就会无法工作,这会极大影响用户体验,目前应该很少有场景会完全不考虑P。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值