分布式事务——理论基础
一、分布式事务和单体的事务:
以前使用单体架构,往往只有一个服务,使用一个数据库,完成业务的各种要求,因此基于数据库本身的特性就可以完成ACID。
但是到了分布式架构,一个业务可能涉及很多个服务,每个服务都有自己的数据库,而且服务之间是独立的,所以事务也是独立的。因此在完成一个业务的时候,无法利用数据库本身的ACID来完成事务的一致性。
比如有三个服务,当其中一个服务出错,而其他服务正常执行的时候,就会出现事务不一致的情况,尽管每个服务都开起了事务功能,也无法保证事务的一致性。
二、什么是分布式事务:
在分布式系统下,一个业务跨越了多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。
三、理论基础:
1、CAP定理:
分布式系统有三个指标:一致性、可用性、分区容错性
分布式系统无法同时满足这三个指标,这个结论就叫CAP定理。
1.1 一致性:
用户访问分布式系统中的任意一个节点,得到的数据必须一致;也就是说,系统中一个节点的数据发生变化,则它的从节点必须及时地实现数据同步。
1.2 可用性:
用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝。
1.3 分区容错性:
分区:因为网络故障或者是其他原因,导致分布式系统中的部分节点与其他节点失去连接,形成独立分区。
分区容错:在集群出现分区的时候,整个系统也要持续对外提供服务。
1.4 CAP理论的理解:
理解了三个概念之后,不难发现,分区是无法避免的,因为我们无法保证网络一直处于健康的状态。那么分区一定会出现:
如果想保证数据一致性,那就得让分区的服务暂时阻塞不可用,等待同步完数据再回复正常服务。
如果想保证服务可用性,那就得让分区继续对外提供服务,这个时候访问主从节点,获取到的数据可能就不是一致的,因此丧失了数据一致性。
由此可见,在分布式系统中,数据一致性和服务可用性无法做到同时满足。
2、BASE理论:
BASE理论是对CAP的一种解决思路,它是在可用性和一致性之间做出取舍和选择,包含了三个思想:
2.1 Basically Available(基本可用):
分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用;
2.2 Soft State(软状态):
在一定的时间内,允许出现中间状态,比如临时的不一致状态;
2.3 Eventually Consistent(最终一致性):
虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
2.4 解决问题:
在分布式系统中,一个事务往往包含很多子事务,各个事务都各自执行和提交,导致状态不一致,而我们要实现的目标是让所有的子事务在最终状态的时候都一致,要么都成功,要么都失败。
AP模式:
各子事务分别执行和提交,允许出现结果不一致,也就是处于软状态,然后采用弥补措施恢复数据即可,实现最终一致。
CP模式:
各个子事务执行后相互等待,同时提交,同时回滚,达成强一致,但是事务等待过程中,处于若可用状态。因为这个时候事务没有提交。
AP和CP模式都需要一个协调者来帮助它们之间进行通信。