Seata的四种事务模式,各自使用场景是什么?

Seata:分布式事务的利剑

Seata(Simple Extensible Autonomous Transaction Architecture)是阿里一个开源的分布式事务解决方案,旨在提供高性能和易用的分布式事务服务。Seata解决了微服务架构下不同服务间数据一致性的问题,让开发者能够更加专注于业务逻辑。

Seata 主要包括以下三个核心组件:

  1. Transaction Coordinator (TC):事务协调器,维护全局和分支事务的状态,驱动全局事务的提交或回滚。作为服务单独部署。

  2. Transaction Manager (TM):事务管理器,定义全局事务的范围:开始全局事务、提交或回滚全局事务。

  3. Resource Manager (RM):资源管理器,管理分支事务处理的资源,与 TC 通信以注册分支事务和报告分支事务的状态,并驱动分支事务的提交或回滚。

工作流程

  1. 开始事务:TM 请求 TC 开启一个新的全局事务。TC 生成一个全局唯一的事务ID。

  2. 业务执行:在全局事务内,微服务可以调用其他微服务。当本地事务被执行时,RM 会向 TC 注册相应的分支事务。

  3. 提交或回滚:根据业务执行的结果,TM 会通知 TC 提交或回滚全局事务。TC 则会协调所有参与当前全局事务的 RM,驱动所有分支事务的提交或回滚。

Seata核心组件

Seata事务管理中有三个重要的组件角色,如下图所示:

三个组件相互协作,TC 以 Server 形式独立部署,TM和RM集成在应用中启动。

1.TC (Transaction Coordinator) 事务协调者

TC:维护全局和分支事务的状态,协调全局事务提交或回滚。

2.TM (Transaction Manager) 事务管理器

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

3.RM (Resource Manager) -资源管理器

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

Seata 的事务模式

1.AT 模式

AT 模式基于 支持本地 ACID 事务 的 关系型数据库

AT模式是Seata默认的工作模式,AT模式是最终一致的分阶段事务模式,无业务侵入。

AT模式机制

  • 一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。

  • 二阶段 commit 行为:马上成功结束,自动 异步批量清理回滚日志。

  • 二阶段 rollback 行为:通过回滚日志,自动 生成补偿操作,完成数据回滚。

2.TCC模式

所谓 TCC 模式,是指支持把 自定义 的分支事务纳入到全局事务的管理中。

一个分布式的全局事务,整体是 两阶段提交 的模型,全局事务是由若干分支事务组成的,分支事务要满足 两阶段提交 的模型要求,即需要每个分支事务都具备自己的:

  • 一阶段 prepare 行为

  • 二阶段 commit 或 rollback 行为

如下图所示:

根据两阶段行为模式的不同,将分支事务划分为 Automatic (Branch) Transaction Mode 和 Manual (Branch) Transaction Mode.

TCC 模式,不依赖于底层数据资源的事务支持:

  • 一阶段 prepare 行为:调用 自定义 的 prepare 逻辑。

  • 二阶段 commit 行为:调用 自定义 的 commit 逻辑。

  • 二阶段 rollback 行为:调用 自定义 的 rollback 逻辑。

3.SAGA 模式 

在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务都由业务开发实现。

SAGA模式:长事务模式,有业务侵入。

4.XA模式 

XA模式是强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入。

XA是基于二阶段提交设计的接口标准,对于支持XA的资源管理器,借助Seata框架的XA模式,会使XA方案更简单易用。

总结 

  1. 一致性保证:Seata 保证了分布式事务的一致性,即使在复杂的分布式场景中也能确保数据的一致性。

  2. 易于集成:Seata 提供了对多种流行分布式事务的集成能力,使在微服务架构中使用分布式事务变的简单。

  3. 高可用和可扩展:Seata 设计了高可用和可扩展性,可以支持大规模的微服务架构。

在微服务架构中处理分布式事务是一个复杂的问题,但 Seata 提供了一个简单有效的解决方案。通过理解 Seata 的核心组件和工作流程,开发者可以更加自信地在自己的微服务项目中实现分布式事务管理。

  • 23
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Seata是一个开源的分布式事务解决方案,可以解决分布式事务的一致性问题。Seata支持多种事务模式,比如原子性事务(AT)模式、可靠消息最终一致性(TCC)模式和基于异步提交的可靠消息最终一致性(SAGA)模式,可以根据具体的应用场景选择合适的事务模式Seata提供了与Spring、Dubbo、gRPC和MyBatis等框架的集成,方便开发者在分布式环境下使用Seata来管理分布式事务Seata的主要作用是解决分布式事务的一致性问题。在分布式环境下,多个服务实例之间的数据一致性是很难保证的,特别是在高并发、高负载的场景下,分布式事务的处理变得更加复杂。Seata提供了分布式事务管理的能力,可以确保多个服务实例之间的数据一致性,从而提高了系统的可靠性和稳定性。 Seata的引用场景包括: 1. 电商系统的订单处理:在电商系统中,订单涉及多个服务,包括库存服务、支付服务和物流服务等。使用Seata可以确保订单创建、支付和发货等操作的一致性。 2. 金融系统的交易处理:在金融系统中,交易涉及多个账户和多个服务,使用Seata可以确保交易的原子性,防止出现异常情况导致交易失败。 3. 游戏系统的虚拟物品交易:在游戏系统中,虚拟物品的交易涉及多个服务,包括背包服务、道具服务和支付服务等。使用Seata可以确保虚拟物品交易的原子性和一致性,防止出现异常情况导致虚拟物品丢失或重复购买等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值