分布式系统理论-CAP和BASE
1. CAP定理和BASE理论的作用
① 分布式事务方案的指导
② 分布式系统设计方向
③ 根据业务指导正确使用的技术选择
2 CAP定理
Consistency 一致性 用户访问分布式系统的任意节点,得到的数据必须一致
Availability 可用性 用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝。
Partition tolerance 分区容错性
分区:因为网络故障或其他原因导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
容错:集群出现分区时,整个系统也要持续对外提供服务。
分布式系统无法同时满足满足以上三个指标,该结论为 CAP定理。分布式系统借钱之间肯定需要网络连接,则分区(P)必然存在。如果保证访问的高可用性(A),可以持续对外提供服务,但是不能保证数据的强一致性,即为AP。如果保证数据的强一致性(C),就需要放弃高可用性,即为CP。
3. BASE理论
BASE理论是对CAP定理的一种解决思路,包含三个思想:
① Baseically Available(基本可用):分布式系统再出现故障时,允许损失部分可用性,保证核心可用。
② Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态
③ Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
如上图,设计为AP模式时,保证系统的高可用性,三个微服务会各自提交自己执行的事务,各个微服务事务处理完成后会同步执行的状态,当发现库存服务提交失败后,数据就不一致,处于一种软状态,三个微服务会将执行的状态上报到事务协调者,事务协调者发现数据不一致,会通知已经提交事务的微服务恢复数据(并非回滚事务,因为事务已经提交,而是逆向操作,实现最终一致性)。当设计为CP模式时,各个微服务会执行自己的业务,但是不会提交事务,执行完成后通知事务协调者执行结果,如果出现未成功的微服务,事务协调者会通知执行成功的微服务进行回滚操作,保证了数据的强一致性,当然,在等待事务协调者的提交通知的过程中,每个微服务的当前操作线程是阻塞的,就失去了高可用性。