06.Seata简介

官网:Seata 是什么

概念:Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

1. Seata架构

1.1. 四种事务模式

Seata 目标打造一站式的分布事务的解决方案,最终会提供四种事务模式:

  • XA模式:详情参见《Seata XA 模式》基于XA协议。以 XA 协议的机制来管理分支事务的一种 事务模式。
    • 特点:强一致性分阶段提交模式,牺牲了一定的可用性,无业务侵入
    • 特点:最终一致性的分阶段事务模式,无业务侵入。也是Seata的默认模式
  • TCC 是分布式事务中的二阶段提交协议,它的全称为 Try-Confirm-Cancel,即资源预留(Try)、确认操作(Confirm)、取消操作(Cancel)。
    • 特点:最终一致性的分阶段事务模式,有业务侵入,需要业务系统自己实现。
    • 特点:长事务解决方案,有业务侵入。在Saga模式中,业务流程中每个参与者都提交本地事务,当出现某一个参与者失败则补偿前面已经成功的参与者,一阶段正向服务和二阶段补偿服务(执行处理时候出错了,给一个修复的机会)都由业务开发实现。

目前使用的流行度情况是:AT > TCC > Saga。因此,我们在学习 Seata 的时候,可以花更多精力在 AT 模式上,最好搞懂背后的实现原理,毕竟分布式事务涉及到数据的正确性,出问题需要快速排查定位并解决。

1.2. Seata事务管理中的三个重要角色

  • TC (Transaction Coordinator) - 事务协调者:维护全局和分支事务的状态,驱动全局事务提交或回滚。
  • TM (Transaction Manager) - 事务管理器:定义全局事务的范围,开始全局事务、提交或回滚全局事务。
  • RM ( Resource Manager ) - 资源管理器:管理分支事务处理的资源( Resource ),与 TC 交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。

其中,TC 为单独部署的 Server 服务端,TM 和 RM 为嵌入到应用中的 Client 客户端。

大致流程:

  1. TM 请求 TC 开启一个全局事务。TC 会生成一个 XID 作为该全局事务的编号。
    1. XID会在微服务调用链中进行传播,用来保证将多个微服务的子事务关联起来
  1. RM 请求 TC 将本地事务注册为全局事务的分支事务,通过全局事务的 XID 进行关联。
    1. 微服务调用的时候作为一个分支事务,RM会代理事务,然后会向TC注册自己(通过调用传播过来的XID进行注册)
    2. RM去执行资源(SQL),然后去向TC报告结果
  1. TM 请求 TC 告诉 XID 对应的全局事务是进行提交还是回滚。
    1. 当TM所在管理的所有分支事务都执行完成后,有报错或者问题就通知TC进行对注册和报告的RM回滚,没有就通知TC,提交全局事务
  1. TC 驱动 RM 们将 XID 对应的自己的本地事务进行提交还是回滚。
    1. TC接到TM的通知后,对注册报告的事务进行提交或者回滚

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值