一、CAP定理
1998年,加州大学的计算机科学家Eric Brewer提出,分布式系统有三个指标:
- Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致
- Availability(可用性):用户访问集群中任意的健康节点,必须能得到响应,而不是超时或者拒绝
- Partition tolerance(分区容错性):
- Partition: 因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
- tolerance: 在集群出现分区时,整个系统也要持续对外提供服务。
Eric Brewer说分布式系统无法同时满足这三个指标,这个结论叫做CAP定理。
结论:
- 分布式系统节点之间肯定需要网络连接的,
分区(P)是必然存在的。 - 如果保证访问的
高可用性(A),可以持续对外提供服务,但不能保证数据的强一致性-->AP。 - 如果保证访问的数据
强一致性(C),就要放弃高可用性-->CP。
二、BASE理论
BASE理论是对CAP的一种解决思路,包含三个思想:
BasicallyAvailable(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。Eventually Consistency(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
三、使用场景
解决分布式事务的思想和模型:
- 最终一致性思想:各分支事务分别执行并提交,如果有不一致的情况,再想办法恢复数据(AP)。
- 强一致性思想:各分支事务执行完业务不要提交,等待彼此结果,而后统一提交或回滚(CP)。