CAP原理和BASE理论的个人理解

CAP原理是什么?

C:Consistency

一致性,访问所有的节点得到的数据应该是一样的,CAP中的一致性指的是强一致,也就是具有实时性,在某个节点更改数据后,获取时能立刻获取到最新的数据(像redis延迟双删)。

A:Availability

可用性,所有的节点都保持高可用性,可用性就是生命力,不容易挂掉或崩溃。CAP中的可用性还包含低延迟,如果延迟过高,例如不能在规定的时间内返回相应的数据,则此节点不具备高可用性。

P:Partiton tolerance

分区容忍性,分区是指的网络意义上的分区,但网络并不是一直稳定的,所有节点之间很可能出现无法通讯的情况,在节点不能通信时,要保证整个程序不能因此而挂掉。

以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。也就是说,当发生了网络波动,有节点未能及时同步数据时,我们为了保证系统不“死掉”,一定会选择P,容忍网络波动这样的情况发生,那么此时我们如果还要保证C的话,因为此时因波动的节点未能接受到新的数据,我们就只能等待(阻塞)到它获取到了新的数据后再读取,但这样我们就违背了A(高可用中的低延迟性)。

同理,我们为保证A的话就直接读取此时节点中的数据,但这时的数据并是不最新的,就违背了C。

所以CAP中,是无法同时满足"C"、"A"、"P"的我们要在当中以具体的项目为例进行取舍,一般为了保证不卡或不挂掉,都会选择"P"。所以一般会选择的组合是AP/CP。

一般来说,放弃强一致性,追求分区容错性和可用性,是很多分布式系统设计的选择。在工程实践中,基于CAP定义逐步演化出了Base理论。

Base理论

Base理论是三要素的缩写:基本可用(Basically Available)、软状态(Soft-state)、最终一致性(Eventually Consistency)。

基本可用对应CAP中的A:可用性。“基本可用”要求系统能够基本运行,一直提供服务,强调的是分布式系统在出现不可预知故障的时候,允许损失部分可用性。例如某游戏登录时候大区人数过多会排队。

软状态则允许系统中的数据存在中间状态,对应CAP的C。并认为该状态不影响系统的整体可用性,即允许系统在不同节点的数据副本上存在数据延时,也就是弱一致性。

最终一致性,数据不可能一直处于软状态,必须在一个时间后同步。在期限过后,应当保证所有副本中的数据保持一致性,也就是达到了数据的最终一致性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值