seata

seata应用

https://blog.csdn.net/weixin_46120888/article/details/123626096

分布式事务Seata的AT模式下两阶段提交原理

https://blog.csdn.net/qq_45076180/article/details/116795591

seata tcc理论实践

https://blog.csdn.net/huaishu/article/details/89880971

seata简单源码视频讲解

https://www.bilibili.com/video/av412910780/

*common
io.seata.core.model.GlobalStatus//status状态

*method begin
io.seata.spring.annotation.GlobalTransactionalInterceptor#invoke //方法拦截
io.seata.spring.annotation.GlobalTransactionalInterceptor#handleGlobalTransaction//请求方法存在@GlobalTransaction注解进入该方法
io.seata.tm.api.TransactionalTemplate#execute
--TransactionInfo txInfo = business.getTransactionInfo();//获取注解信息
--GlobalTransaction tx = GlobalTransactionContext.getCurrentOrCreate();//获取或者创建一个全局事务(xid)
--Propagation propagation = txInfo.getPropagation();//获取事务的传播特性
--beginTransaction(txInfo, tx);//
----io.seata.tm.api.TransactionalTemplate#beginTransaction
------io.seata.tm.api.DefaultGlobalTransaction#begin(int, java.lang.String)//TM角色向TC申请XID并绑定
--rs = business.execute();//执行业务逻辑

*mapper begin
accountMapper.updateById(account);
//io.seata.spring.annotation.datasource.SeataAutoDataSourceProxyCreator
io.seata.rm.datasource.PreparedStatementProxy#executeUpdate
io.seata.rm.datasource.exec.ExecuteTemplate#execute(io.seata.rm.datasource.StatementProxy<S>, io.seata.rm.datasource.exec.StatementCallback<T,S>, java.lang.Object...)
io.seata.rm.datasource.exec.ExecuteTemplate#execute(java.util.List<io.seata.sqlparser.SQLRecognizer>, io.seata.rm.datasource.StatementProxy<S>, io.seata.rm.datasource.exec.StatementCallback<T,S>, java.lang.Object...)
io.seata.rm.datasource.exec.BaseTransactionalExecutor#execute
io.seata.rm.datasource.exec.AbstractDMLBaseExecutor#doExecute
io.seata.rm.datasource.exec.AbstractDMLBaseExecutor#executeAutoCommitTrue
--connectionProxy.setAutoCommit(false);
--io.seata.rm.datasource.exec.AbstractDMLBaseExecutor#executeAutoCommitFalse
----TableRecords beforeImage = beforeImage();
----T result = statementCallback.execute(statementProxy.getTargetStatement(), args);
----TableRecords afterImage = afterImage(beforeImage);
----prepareUndoLog(beforeImage, afterImage);
--connectionProxy.setAutoCommit(true);
----io.seata.rm.datasource.ConnectionProxy#commit | io.seata.rm.datasource.ConnectionProxy#setAutoCommit
----io.seata.rm.datasource.ConnectionProxy#doCommit
----io.seata.rm.datasource.ConnectionProxy#processGlobalTransactionCommit
----io.seata.rm.datasource.undo.AbstractUndoLogManager#flushUndoLogs
//状态上报
io.seata.rm.datasource.ConnectionProxy#report

//重试
io.seata.rm.datasource.exec.ExecuteTemplate#execute(java.util.List<io.seata.sqlparser.SQLRecognizer>, io.seata.rm.datasource.StatementProxy<S>, io.seata.rm.datasource.exec.StatementCallback<T,S>, java.lang.Object...)
io.seata.rm.datasource.exec.BaseTransactionalExecutor#execute
io.seata.rm.datasource.exec.SelectForUpdateExecutor#doExecute
--lockRetryController.sleep(lce);

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值