轻松掌握Seata源码分析之AT模式整体大纲流程跟踪

如下为订单和库存的实例代码,在事务开启处即订单服务处使用GlobalTransactional即可。当添加了异常代码使订单无法加一,这时减库存服务也会回滚,根据的就是undolog。回滚完undolog记录会被释放删除。
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第1张图片

AT模式整体大纲流程跟踪如下:

如果是springboot项目找到Seata对应依赖
在这里插入图片描述
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第2张图片

springboot的自动装配文件spring.factories,内容如下:
在这里插入图片描述

里面看到自动装配了几个bean,找到与自己想看的bean关系大的
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第3张图片

我们要研究AT模式,AT模式使用了GlobalTransactional全局事务注解,找到了如下相似的bean,翻译就是全局事务扫描器,说明正是我们想要的。
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第4张图片

在网上我们下载seata源码,在搜索我们要查的类,看到继承了AbstractAutoProxyCreator。说明它使用了AOP代理,那么必然会实现wrapIfNecessary。逻辑如下:
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第5张图片
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第6张图片
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第7张图片

点击到全局事务拦截器GlobalTransactionalInterceptor里看看,拦截器里看invoke方法中执行了全局事务如下:
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第8张图片

到执行全局事务方法里看,主要有执行当前事务的核心逻辑、获取事务信息方法。
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第9张图片

执行当前事务的核心逻辑,如下步骤
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第10张图片
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第11张图片
轻松掌握Seata源码分析之AT模式整体大纲流程跟踪_第12张图片

以上我们分析了整体的大纲流程是如何走的,对于详细的比如undolog如何生成则需要进入相应细节仔细分析。

你可能感兴趣的:(轻松掌握spring,java,spring,spring,boot)