本文共 1448 字,大约阅读时间需要 4 分钟。
在上个章节中我们已经完成了这个商城的核心功能,下单.下单接口涉及了4个微服务,那么就一定存在分布式事务的问题,在分布式事务框架完善以前,企业里面处理分布式带来的事务问题时,一般都是人肉反向sql的方式去处理,我们这里引入alibaba seata给我们提供分布式事务的功能.
模式 | 含义 |
---|---|
AT模式 | AT 模式是一种无侵入的分布式事务解决方案。在 AT 模式下,用户只需关注自己的“业务 SQL”,用户的 “业务 SQL” 作为一阶段,Seata 框架会自动生成事务的二阶段提交和回滚操作。 |
TCC模式 | 所谓 TCC 模式,是指支持把 自定义 的分支事务纳入到全局事务的管理中。 |
Saga 模式 | Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。 |
XA模式 | 开发中 |
seata我们一般来说由1+3组成
举例:比如我们上一个章节开发的下订单接口,如果引入seata做分布式事务,server-order服务就是TM,server-goods、server-pay、server-user都是RM.
a:解析sql语义,找到业务sql更新的业务数据,在业务数据更新前,将其保存为"before image".
b:执行业务sql更新业务数据,在业务数据更新之后. c:将其保存为after image,最后生成行锁 d:以上三步操作在一个数据库事务内完成,这样保证了一阶段操作的原子性.a:提交
因为业务sql已经提交至数据库,seata只需要将一阶段保存的快照数据和行锁删掉,完成数据清理即可. b:回滚 seata需要回滚一阶段已经执行的业务sql,还原业务数据,回滚方式便是用"before image"还原业务数据,但是在还原前要首先校验脏写,对比"数据库当前业务数据"和after image,如果两份数据完全一致就说明没有脏写,可以还原业务数据,如果不一致就说明有脏写,出现脏写就需要转人工处理.您的点赞、收藏、转发和关注是我持续创作的动力!
转载地址:http://uutli.baihongyu.com/