CAP定理与BASE理论
CAP定理
1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标:
- Consistency(一致性)
- Availability(可用性)
- Partition tolerance (分区容错性)
Eric Brewer 说,分布式系统无法同时满足这三个指标。这个结论就叫做 CAP 定理。
Consistency
Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致
Availability
Availability (可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝
Partition tolerance
Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务
CAP定理总结
-
分布式系统节点通过网络连接。网络又是不可靠的,所以一定会出现分区问题(P)
-
当分区出现时,系统的一致性(C)和可用性(A)就无法同时满足。
比如(如上图)node3与其他节点失去连接,node3就不能与其他节点进行数据同步。如果要保证node3的可用性,那么数据一致性就得不到保障。如果要保证node3的数据一致性,只有让node3进行等待,直到网络恢复,但是node3现在就是不可用的状态,可用性又得不到保障。
BASE理论
BASE理论是对CAP的一种解决思路,包含三个思想:
-
Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
-
Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
-
Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
而分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论:
- AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。
- CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。
CAP定理与BASE理论
https://www.zhaojun.inkhttps://www.zhaojun.ink/archives/1017