分布式事务-seata

官网地址:Seata术语

 学习教程看:https://blog.youkuaiyun.com/finally_vince/article/details/125260527

视频教程:实战阿里分布式事务框架Seata视频教程(无废话,通俗易懂版)_哔哩哔哩_bilibili

一、Seata术语

TC (Transaction Coordinator) - 事务协调者(就是seata服务本身

        维护全局和分支事务的状态,驱动全局事务提交或回滚。

TM (Transaction Manager) - 事务管理器(分布式事务发起发服务)

        定义全局事务的范围:开始全局事务、提交或回滚全局事务。

RM (Resource Manager) - 资源管理器(每个服务本身的事务)

        管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

Seata 管理分布式事务的典型生命周期
  • TM要求TC开始新的全局事务。 TC生成表示全局事务的XID
  • XID通过微服务的调用链传播。
  • RM将本地事务注册为XIDTC的相应全局事务的分支。
  • TM要求TC提交或回滚XID的相应全局事务。
  • TCXID的相应全局事务下驱动所有分支事务,以完成分支提交或回滚。

1.1 AT 模式(seata推荐)

前提:       基于支持本地 ACID 事务的关系型数据库。
                Java 应用,通过 JDBC 访问数据库。 整体机制
是两阶段提交协议的演变
一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
二阶段: 提交异步化,非常快速地完成。
                回滚通过一阶段的回滚日志进行反向补偿。
与传统的两阶段提交对比:在一阶段的时候,将提交事务,释放资源,不再阻塞,提交的业务性能。提交事务的时候,将数据和undo log都写了数据,如果发生异常,在二阶段的时候就回滚数据,并删除undo log日志。
写隔离
一阶段本地事务提交前,需要确保先拿到 全局锁
        拿不到 全局锁 ,不能提交本地事务。
        拿 全局锁 的尝试被限制在一定范围内,超出范围将放弃,并回滚本地事务,释放本地锁。

1.2 TCC 模式(不推荐)

不推荐,因为对业务代码侵入性太大,要自己实现每个步骤
描述:一个分布式的全局事务,整体是 两阶段提交 的模型。全局事务是由若干分支事务组
成的,分支事务要满足 两阶段提交 的模型要求,即需要每个分支事务都具备自己的:
        一阶段 prepare 行为
        二阶段 commit rollback 行为
TCC 模式:不依赖于底层数据资源的事务支持:
        一阶段 prepare 行为:调用 自定义 prepare 逻辑。
        二阶段 commit 行为:调用 自定义 commit 逻辑。
        二阶段 rollback 行为:调用 自定义 rollback 逻辑。

1.3 Saga 模式(长事务解决方案)

Saga 模式是 SEATA 提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发 实现。
适用场景:
        业务流程长、业务流程多
        参与者包含其它公司或遗留系统服务,无法提供 TCC 模式要求的三个接口
优势:
        一阶段提交本地事务,无锁,高性能
        事件驱动架构,参与者可异步执行,高吞吐
        补偿服务易于实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值