在分布式环境中,一致性是指数据在多个节点之间能够保持一致的特性。如果在某个节点上执行变更操作后,用户可以立即从其他任意节点上读取到变更后的数据,那么就认为这样的系统具备强一致性。
可以性是指系统提供的服务必须一直处于可用状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。它主要强调以下两点:
分区容错性指定是分布式系统在遇到网络分区时,仍需要能够对外提供一致性和可用性的服务,除非是整个网络环境都发生了故障。
这里的网络分区指的是:在分布式系统中,由于不同的节点会分布在不同子网中(不同机房或异地网络等),由于一些特殊的原因,可能会出现子网内部是正常的,但子网彼此之间却无法正常通信,从而导致整个系统的网络被切分成若干个独立的区域,这就是网络分区。
CAP 理论强调:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个需求,最多只能同时满足其中的两个。这里我们来进行一下解释说明:
首先对于一个分布式系统而言,网络分区是不可避免的,不可能永远不出现网络故障,所以分区容错性 P 必须要保证。假设一个分布式系统中出现了网络分区,如下:

假设用户 1 向节点 1 上增加了 10 个数据,但节点 1 和节点 2 之间因为网络分区而无法进行数据同步,碰巧用户 2 此时发起了查询请求,此时有两种处理方案:
可以看到无论如何,都是无法既保证 A ,又保证 C 的。
因为 CAP 理论不能将一致性、可用性和分区容错性都满足,所以需要根据不同系统的特性进行取舍,主要分为以下三种情况:

BASE是对基本可用(Basically Available)、软状态( Soft State)、最终一致性( Eventually Consistent)三个短语的简写,它是对 CAP 理论中 AP 策略的延伸。其核心是即便无法做到强一致性,但每个系统应用都应该根据自身业务的特点,采取适当的方式来保证系统的最终一致性,而具体的方案就体现在这三个短语上:
基本可用是指分布式系统在出现不可预知的故障时,允许损失部分可用性,例如:
软状态也称为弱状态,是指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统整体的可用性,即允许不同节点间的数据同步存在延时。
最终一致性强调的是系统中所有的数据副本,在经过一段时间的同步后,最终需要达到一致的状态。