理论很少说,谈起事务,必然就绕不过ACID。然而传统的分布式事务在当下的分布式、微服务结构中中并不太合适,数据在传统的分布式事务中会被锁住,并且还要应对XA协议带来的开销(创建和关闭与资源管理器的链接、预提交、提交和回滚一个本地事务等等)。分布式
与之相对的,是更符合当下业务需求的基于BASE理论的柔性事务。微服务
【ACID(A,I)::原子性,隔离性】与【BASE(S)::柔性状态】:好比说在支付系统中,有一个支付业务系统和积分系统,若是要知足原子性与隔离性,那么逻辑确定是这样的:事务
可是在BASE的柔性状态中,容许出现资源
这样的状况,柔性事务中,容许数据短暂的不一致,以及非隔离性的操做。秒杀
【ACID(A,D)::原子性,持久性】与【BASE(E)最终一致性】:最终一致性指的是系统中的全部数据副本通过必定时间后,最终可以达到一致的状态。支付
基本可用有两个层面,即,call
好比说我有一个秒杀商品的业务,有些用户会获取到一个假的秒杀页,而且秒杀一定失败...之类的。数据