seataAT模式工作原理
TM通知TC开启全局事务 TC记录全局事务开启状态! TM开了三个但是有唯一标记
下图的1.1 TC就是seata 就是一个事务协调器 TM是事务管理器


1.2 TM要调用分支事务 (TM通知RM) 每一个参与到分支事务里面的微服务 例如 trade-service item-service
1.3 RM 向TC 开了三个register success 注册分支事务
1.TM通知TC开启全局事务 TC记录全局事务开启状态
2.TM通知RM 开始执行分支事务 向TC注册分支事务
3.RM执行自己的业务,并提交事务 同时在提交前后向unlog记录日志
4.RM向TC汇报自己的事务 成功或者失败的状态
5 TM通知TC 提交或者回滚全局事务 TC根据全局事务中每个分支事务的状态统一提交或回滚
5.提交 每个RM删除unlog表数据
7. 回滚 每个RM根据unlog表中的数据反向操作 最后删除unlog数据

1开始全局事务:
2注册分支事务:
13:14:49.305 INFO --- [verHandlerThread_1_11_500] i.seata.server.coordinator.AbstractCore : Register branch successfully, xid = 192.168.101.68:8099:18644284762001431, branchId = 18644284762001435, resourceId = jdbc:mysql://192.168.101.68:3306/hm-trade ,lockKeys = order:1901623254808813569
13:14:49.382 INFO --- [verHandlerThread_1_12_500] i.seata.server.coordinator.AbstractCore : Register branch successfully, xid = 192.168.101.68:8099:18644284762001431, branchId = 18644284762001437, resourceId = jdbc:mysql://192.168.101.68:3306/hm-trade ,lockKeys = order_detail:67
13:14:49.914 INFO --- [verHandlerThread_1_13_500] i.seata.server.coordinator.AbstractCore : Register branch successfully, xid = 192.168.101.68:8099:18644284762001431, branchId = 18644284762001439, resourceId = jdbc:mysql://192.168.101.68:3306/hm-item ,lockKeys = item:317578
3批量处理日志
13:15:00.297 INFO --- [ batchLoggerPrint_1_1] i.s.c.r.p.server.BatchLogHandler : xid=192.168.101.68:8099:18644284762001431,extraData=null,clientIp:192.168.101.1,vgroup:hmall
seata正在处理批量日志记录
4回滚分支事务
13:15:00.344 INFO --- [verHandlerThread_1_14_500] io.seata.server.coordinator.DefaultCore : Rollback branch transaction successfully, xid = 192.168.101.68:8099:18644284762001431 branchId = 18644284762001439
13:15:00.384 INFO --- [verHandlerThread_1_14_500] io.seata.server.coordinator.DefaultCore : Rollback branch transaction successfully, xid = 192.168.101.68:8099:18644284762001431 branchId = 18644284762001437
13:15:00.402 INFO --- [verHandlerThread_1_14_500] io.seata.server.coordinator.DefaultCore : Rollback branch transaction successfully, xid = 192.168.101.68:8099:18644284762001431 branchId = 18644284762001435
5.回滚全局事务
13:15:00.403 INFO --- [verHandlerThread_1_14_500] io.seata.server.coordinator.DefaultCore : Rollback global transaction successfully, xid = 192.168.101.68:8099:18644284762001431.

浙公网安备 33010602011771号