分布式事务DTS

分布式事务DTS
https://www.21ic.com/article/882518.html
跨行转账

TCC模式:

三个不同的接口,

全局事务id

  1. 一阶段,准备阶段

    1. A冻结金额,写入中间表
    2. B增加金额,写入中间表
  2. 二阶段,确认

    1. 准备阶段成功
    2. 处理中间表,写入金额表
  3. 二阶段,回滚

    1. 准备阶段失败
    2. A解除冻结,处理中间表
    3. B处理中间表

发起方:

事务发起方本地事务:start local transaction

    a.调用方法:
        事务传播特性:PROPAGATION_REQUIRES_NEW
        insert事务activity表,记录分布式事务状态
    
    b.原子操作A(RPC服务A预提交)

    c.调用方法:
        事务传播特性:PROPAGATION_REQUIRES_NEW
        insert事务Action表

    d.原子操作B(RPC服务B预提交)
    
    e.调用方法:
        事务传播特性:PROPAGATION_REQUIRES_NEW
        insert事务Action表

    ....

    f.调用方法:
        事务传播特性:PROPAGATION_REQUIRED
        update事务acitvity,更新分布式事务状态为成功

end local transaction

进入提交阶段:
    本地事务正常结束 -> 远程事务提交(rpc)
    本地事务发生回滚 -> 远程事务回滚(rpc)

    二阶段异常:
        server 定时捞取activity中的异常数据,进行回滚会提交

参与者实现

1. 预提交
2. 提交
3. 回滚

AT模式

区别在于seata的回滚是记录了数据之前的状态,对比当前数据,一致,进行sql逆向,脏数据人工处理

单独部署的TC,各个分支事务向TC注册分支事务
分支事务-> 写回滚日志,处理数据库业务

TC 单独部署的全局事务协调人
TM 事务发起方,负责事务的发起,提交,回滚
RM 资源管理器,注册分支事务,报告分支状态,保留分支日志,驱动分支事务回滚,提交
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值