## 一般的本地事务,是ACID
也就是A:原子性:数据最小单位不可分割
C:一致性:数据提交前提交后总和不变
I:隔离性:
读未提交
读已提交
可重复度
串行化
d:持久性:事务提交了,那么对事务的变更就完全保存到了数据库中,即使发生停电,宕机也是如此
他这个其中的原子性和一致性就是靠undo跟redo日志系统回滚
分布式事务:
分布式事务实质分布式系统下不是单个服务或者单个数据库
,跨数据源,跨服务,和一些中间情况,
主要解决理论就是CAP和BASH理论
C:一致性
A:可用性
P:容错性
a-b a-c
b-c
数据同步需要时间,所以才需要牺牲一定的可用性
zookeep强一致性,做集群的时候,在服务节点数据同步时,服务对外不可用
eureka满足ap,必须保证注册中心随时可用,不然拉取不到服务就可能出现问题
BASE理论
B 基本可用
S:软状态
E:最终一致性
解决方案有4种
:
XA :分阶段提交。多个事务分成多个小事务,一个事务失败,通过crm(通信资源管理器)来通知各个本地事务,同步事务执行的状态。
2阶段提交
1,各个本地事务完成本地事务的准备工作,执行完不要提交
2.执行阶段,各个本地事务根据上一个阶段执行结果,进行提交或回滚
出现问题,会出现资源锁的问题。。。单点故障问题
TCC :业务复杂。,是一种补偿机制
可靠消息最终一致性:通过消息中间键
AT seata通过加上@globalTransactions注解