分布式事务解决方案-Seata

概述

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

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

三种角色

       Seata架构中,一共有三个角色:

       三个角色

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

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

       在Seata中,一个分布式事务的生命周期如下:

       架构图

  • TM请求TC开启一个全局事务。TC会生成一个XID作为该全局事务的编号;

       说明:XID,会在微服务的调用链路中传播,保证将多个微服务的子事务关联在一起。

  • RM请求TC将本地事务注册为全局事务的分支事务,通过全局事务的XID进行关联;
  • TM请求TC告诉XID对应的全局事务是进行提交还是回滚;
  • TC驱动RM将XID对应自己的本地事务进行提交还是回滚。

TC Server部署方式

框架支持情况

       Seata目前提供了对主流的微服务框架的支持:

  • Dubbo:通过 seata-dubbo 集成
  • SOFA-RPC:通过 seata-sofa-rpc 集成
  • Motan:通过 seata-motan 集成
  • gRPC:通过 seata-grpc 集成
  • Apache HttpClient:通过 seata-http 集成
  • Spring Cloud OpenFeign:通过 spring-cloud-starter-alibaba-seata 的 feign 模块
  • Spring RestTemplate:通过 spring-cloud-starter-alibaba-seata 的 rest 模块

       同时方便我们集成到Java项目当中,Seata也提供了相应的Starter库:

       因为 Seata 是基于 DataSource 数据源进行代理来拓展,所以天然对主流的 ORM 框架提供了非常好的支持:

  • MyBatis、MyBatis-Plus
  • JPA、Hibernate

案例情况

        汇总图

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值