Seata TM管理分支事务源码

TM相当于一个中间商,是没有涉及到任何数据库底层操作的。

TransactionalTemplate

1、TM向TC端发起一次开启全局事务的请求
io.seata.tm.api.TransactionalTemplate#beginTransaction
-->
io.seata.tm.api.DefaultGlobalTransaction#begin(int, java.lang.String)
-->
io.seata.tm.DefaultTransactionManager#begin
@Override
public String begin(String applicationId, String transactionServiceGroup, String name, int timeout)throws TransactionException {
        GlobalBeginRequest request = new GlobalBeginRequest();
        request.setTransactionName(name);
        request.setTimeout(timeout);
        GlobalBeginResponse response = (GlobalBeginResponse) syncCall(request);
        if (response.getResultCode() == ResultCode.Failed) {
            throw new TmTransactionException(TransactionExceptionCode.BeginFailed, response.getMsg());
        }
        return response.getXid();
}
2、 TM向TC端发起一次全局提交事务请求

io.seata.tm.api.TransactionalTemplate#commitTransaction
-->
io.seata.tm.DefaultTransactionManager#commit
@Override
public GlobalStatus commit(String xid) throws TransactionException {
        GlobalCommitRequest globalCommit = new GlobalCommitRequest();
        globalCommit.setXid(xid);
        GlobalCommitResponse response = (GlobalCommitResponse) syncCall(globalCommit);
        return response.getGlobalStatus();
}
3、TM向TC端发起一次全局回滚事务请求
io.seata.tm.api.TransactionalTemplate#rollbackTransaction
io.seata.tm.DefaultTransactionManager#rollback
    @Override
    public GlobalStatus rollback(String xid) throws TransactionException {
        GlobalRollbackRequest globalRollback = new GlobalRollbackRequest();
        globalRollback.setXid(xid);
        GlobalRollbackResponse response = (GlobalRollbackResponse) syncCall(globalRollback);
        return response.getGlobalStatus();
    }
  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Seata是一个开的分布式事务解决方案,它提供了一种简单而强大的方式来管理分布式事务Seata由三个核心组件组成:事务协调器(TC)、事务管理器(TM)和资管理器(RM)。 事务协调器(TC)负责协调分布式事务的各个参与方,并确保所有参与方在事务执行期间保持一致性。 事务管理器(TM)负责启动、提交和回滚分布式事务。它与应用程序紧密集成,提供了一致的编程模型。 资管理器(RM)负责管理各个参与方的资,包括数据库、消息队列等。它与具体的资进行交互,执行事务操作。 使用Seata管理分布式事务的基本流程如下: 1. 应用程序通过TM发起一个新的分布式事务。 2. TM生成一个全局事务ID,并将其传递给所有参与方。 3. 参与方接收到全局事务ID后,将其作为本地事务ID,并开始执行本地事务。 4. 参与方在本地事务执行期间,将所有对资的操作记录到本地日志中。 5. 当所有参与方的本地事务执行完毕后,TM发起全局提交请求。 6. 如果所有参与方都成功提交了本地事务,则分布式事务提交完成。否则,TM发起全局回滚请求,参与方执行本地事务的回滚操作。 Seata提供了丰富的配置选项和扩展点,可以与各种不同的应用程序和框架集成。它支持多种编程语言和技术栈,并提供了一些常见的插件,如数据库插件、消息队列插件等,以便更好地与不同的资进行交互。 总之,Seata是一个功能强大且易于使用的分布式事务解决方案,可以帮助开发人员简化分布式系统中的事务管理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值