本地事务
事务ACID
atomicity 原子性:事务时最小的执行单位,其操作要么全部完成,要么全部不起作用
consistency 一致性:执行事务前后数据将保持一致性,不同事务对一个数据的读取结果是一样的
isolation 隔离性:并发时,一个用户的事务不会被其他事务所干扰,各自独立
durability 持久性:一个事务提交后,所产生的效果是持久性的,即使数据库发生故障仍然没有影响
分布式事务
CAP定律:因为分布式的原因,分区容错性一定存在,所以只能在ac中进行取舍
consistency 一致性:执行事务前后数据将保持一致性,不同事务对一个数据的读取结果是一样的
atomicity 原子性:事务时最小的执行单位,其操作要么全部完成,要么全部不起作用
p 分区容错性
BASE理论:在无法达到强一致性的情况下,根据业务情况,采用适当的办法达到最终一致性
基本可用:系统出现不可预估故障时,容许部分不可用
软状态:数据可以存在中间状态,即不同数据副本之间的数据同步可以出现延迟
最终一致性:不同数据副本之间的数据最终达到一致
Seata(@GloablTransactional)
TC:事务协调者 即seata服务端
TM:事务管理者
RM:资源管理者 即事务参与者
核心:2PC理论(俩阶段提交)
准备阶段:事务管理器发送prepare消息,参与者在本地进行事务执行,写入uodo/redo日志,但并不提交
提交阶段:如果事务管理器收到参与者的失败消息,则回滚,如果成功,则参与者提交事务
自动补偿,不需要用户自定义补偿:
AT模式(用户只关注SQL语句)
一阶段:Seata拦截sql进行解析,然后在数据更新前,将数据写入undo日志,在执行SQL成功后,将更新的数据写入redo日志,在本地数据库事务内完成
二阶段:在本地事务完成后,执行全局提交,如果失败,则利用undo日志执行回滚
XA模式:不存在中间数据,强一致性
需要用户自定义补偿:
TCC模式:侵入性大 需要自己手动去进行回滚 ,但是没有锁,性能强
SEGA模式:对于封闭式的老系统,或者没有介入分布式事务的系统