一 seata的AT模式
1.1 AT模式与XA模式
1.XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源;
2.XA模式依赖数据库机制实现回滚;AT模式利用数据库快照实现数据回滚
3.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模式的优点:
1.一阶段完成直接提交事务,释放数据库资源,性能比较好;
2.利用全局锁实现读写隔离;
3.没有代码侵入,框架自动完成回滚和提交;
AT模式的缺点:
1.两阶段之间属于软状态,属于最终一致;2.框架的快照功能会影响性能,但比XA模式要好很多。
二 seata的操作案例
2.1 工程结构
2.2 设置切换seata模式
1.account
2.order:
3.storage
2.3 附件数据库
2.4 启动nacos,seata
1.启动nacos
2.启动seata
2.5 测试
2.5.1 初始态数据表
2.5.2 正常下订单
1.请求地址: http://localhost:8082/order?userId=user202103032042012&commodityCode=100202003032041&count=2&money=200
2.访问
查看控制台:正常显示
查看数据表:正常扣减
2.5.3 大于库存量下单
1.请求: 请求数量20大于库存数量3
http://localhost:8082/order?userId=user202103032042012&commodityCode=100202003032041&count=20&money=200
2.访问地址
3.查看控制台:进行回滚
查看数据表: 数据均回滚,没有脏数据。实现分布式事务功能,进行回滚文章来源:https://www.toymoban.com/news/detail-732085.html
文章来源地址https://www.toymoban.com/news/detail-732085.html
到了这里,关于springcloud3 分布式事务解决方案seata之AT模式5的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!