一 seata的AT模式
1.1 AT模式与XA模式
-
XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。
-
XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。
-
XA模式强一致;AT模式最终一致
1.2 AT模式原理
一阶段
1)TM发起并注册全局事务到TC
2)TM调用分支事务
3)RM进行注册分支事务、记录undo-log(数据快照)、执行业务sql并提交、报告事务状态
二阶段
1)TM通知TC事务结束
2)TC检查分支事务状态
a)如果都成功,则立即删除快照
b)如果有分支事务失败,需要回滚。读取快照数据undo.log,将快照恢复到数据库
1.3 AT的优缺点
AT模式的优点:
-
一阶段完成直接提交事务,释放数据库资源,性能比较好
-
利用全局锁实现读写隔离
-
没有代码侵入,框架自动完成回滚和提交
AT模式的缺点:
-
两阶段之间属于软状态,属于最终一致
-
框架的快照功能会影响性能,但比XA模式要好很多