目录
一、什么是分布式事务?
二.分布式事务计划
三. Seata介绍
四.订单系统
五. Seata AT的基本原理
Seata AT事务分为两个管理全局事务的阶段。
阶段1 :执行各分支事务
1 )呼叫订单服务
2 )调出库存服务
3 )完成账户分支事务:
第2阶段:控制全局事务的最终回滚
一、什么是分布式事务? 区分:
普通事务:
分布式事务:
在微服务系统中,每个微服务应用都可能会有自己的数据库,他们可以在首先要控制自己的本地事务一个业务操作中调用多个微服务。 那么怎么解决证多个事务执行多个数据库的操作整体成功或整体失败这就是分布式事务需要解决的问题!
二.分布式事务方式分布式事务有以下解决方案:
xa http://www.Sina.com/http://www.Sina.com/saga http://www.Sina.com /最大努力通知
三、Seata为3358www.Sina.com/或开源TCC,致力于提供高性能、易用的分布式事务服务。 SeATa为用户提供了at、TCC、SAGA和XA事务模型,为用户提供了一站式分布式解决方案。 Seata,意思是simpleextensibleautonomoustransactionarchitecture,Seata 框架 AT 事务Seata融合了阿里巴巴和蚂蚁金服在分布式办公技术上的积累,在新零售、克里克
的分布式事务场景的愿景,仍有很长的路要走。四、订单系统当用户下单时,执行以下三步流程:
1、订单系统保存订单
2、订单系统调用库存服务,减少库存
3、订单系统调用账户服务,扣减金额
这三步作为有一个整体事务进行管理,要么整体成功,要么整体失败
五、Seata AT 基本原理 Seata AT 事务分两个阶段来管理全局事务:第一阶段:执行各分支事务
第二阶段:控制全局事务最终提交或回滚
第一阶段: 执行各分支事务微服务系统中,各服务之间无法感知事务是否执行成功,这时就需要一个专门的服务,来协调各个服务的运行状态。这个服务称之为TC(Transaction Coordinator,事务协调器)。
1)调用订单服务
1、订单系统开始执行保存订单命令之前,首先会启动TM(Transaction Manager,事务管理器),由 TM向TC申请开启一个全局事务:
2、这时会产生一个全局事务ID,称之为XID,并将XID传回TM:
这样就开启了全局事务!
3、全局事务开启后,开启执行创建订单的业务。首先执行保存订单,这时会先启动一个RM(Resource Manager,资源管理器),并将XID传递给RM:
4、RM负责对分支服务(即微服务的本地服务)进行管理,并与TC通信上报分支服务的执行状态、接收全局事务的提交或滚回命令。
RM首先会使用 XID 向 TC 注册分支事务, 将分支事务纳入到对应的全局事务管辖:
5、现在可以执行保存订单的分支事务。一旦分支事务执行成功,RM会上报事务状态:
6、TC收到后,会将该状态信息传递到TM:
7、到此,保存订单过程结束。
2)调用库存服务减少库存商品,与订单的执行过程相同。
1、首先调用库存服务,启动RM,并传递XID:
2、库存服务的 RM 使用 XID 向TC进行注册,纳入全局事物管辖:
3、执行本地事务成功后上报状态,TC会将状态发送给TM:
4、执行完成。
3)完成账户分支事务:与上述相同:
到此,全局事务全部提交完成!
第二阶段:控制全局事务最终回滚
上面是全局事务执行成功的情况,下面是失败的情况。
1、假设订单业务执行过程中,扣减账户金额这一步分支执行失败,那么失败状态会对TC上报,然后再发送给TM:
TTM会进行决策,确定全局事务的失败,向TC发送全局事务的回滚请求:
然后,TC会向所有的 RM 发送回滚指令, RM 会完成最终的回滚操作: