1、启动时,自动代理数据源,应用GlobalTransactionalInterceptor,初始化TM和RM
2、进入@GlobalTransactional业务方法时,TM向TC发请求申请开启全局事务,并获得全局事务ID
3、业务方法调用远程服务接口完成业务处理
4、RM执行本地逻辑,注册分支事务,获取全局锁,成功后提交本地事务并写入undo_log,本地事务提交成功后向TC报告分支事务
5、TM发起全局事务提交请求,TC向所有已注册的RM发请求,让RM进行分支提交,删除本地undo_log
6、若执行失败,TM发起全局事务回滚,TC向所有RM发请求,回滚分支事务,还原数据
调用关系如图: