CAP理论

一个分布式系统不可能同时满足一致性[Consistency],可用性[Availability],和分区容错性[Partition tolerance]这三个基本需求,最多只能同时满足其中的两项。
一致性。
一致性是指数据在多个副本之间是否能够保持一致的特性。假如现在的多个结点中的数据是保持一致的,当执行完某一个更新操作之后,应当要保证系统的数据然后处于一致性的状态。
对于一个将数据副本分布在不同的分布式节点上,如果对第一个结点的数据进行了更新的操作,并且更新成功之后,却没有让第二个节点得到相应的更新。当外部系统再去调用第二个节点时,获取到的依然是原始的数据,这就是分布式数据不一致的情况了。在分布式系统中,如果能够做到针对一个数据项更新操作执行成功之后,所有的用户都可以读取到最新的值,那么这样的系统就被认为是具有强一致性的。
可用性。
可用性是指系统提供的服务必须一致处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内,返回结果。
有限的时间内:对于用户的一个操作请求,系统必须能够在指定的时间内返回对应的结果。如果超过了这个时间,就认为系统是不可用的。
返回结果是可用性的一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果包含成功或失败,而不是一个让用户迷惑的结果。
分区容错性。
分布式系统在遇到任何网络分区故障的时候,仍然需要对外提供满足一致性和可用性的服务。

CAP理论和BASE理论 - 图1
一个分布式系统既然不能同时满足上述的三个需求,因此在进行对cap定理的应用时,我们就需要去抛弃一项。
①选择CA
放弃分区容错性,比较简单的方式就是把所有的数据都放在一个分布式节点上。那不就又成为了单机应用了吗?
②选择CP
放弃可用性,一旦出现网络故障,受到影响的服务需要再等待一定时间,因为系统处于不可用的状态。
③选择AP
放弃一致性,这里所指的一致性是强一致性,但是确保最终一致性。是很多分布式系统的选择。
小结:从cap的定理可以看出,分区容错性是一个最基本的要求,因为既然是一个分布式系统,必然要部署到两个或两个以上的节点上,否则,就不是分布式系统,因此我们只能在一致性和可用性寻求平衡。

BASE理论

base是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写。base是对cap中一致性和可用性的权衡的结果。是根据cao理论演变而来,核心思想是即使无法做到强一致性,但是每个应用根据自身的业务特点,采用适当的方式来使系统达到最终与执行。
①基本可用
基本可用指的是分布式系统出现了不可预知故障的时候,允许损失部分可用性。响应时间合理延长,功能上适当做服务降级。
②弱状态
弱状态指的是允许系统中的数据存在中间状态,并认为该中间状态不会影响系统的整体可用性,即允许在各个节点数据同步时存在延时。
③最终一致性
最终一致性强调的是系统中所有的数据副本,在经过一点时间 的同步之后,最终能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证数据最终能够达到一致。而不需要实时保证系统数据的一致性。