美文网首页其他零散知识点
分布式组件-seata介绍

分布式组件-seata介绍

作者: 乙腾 | 来源:发表于2021-03-21 20:09 被阅读0次

seata介绍

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

Seata元素

TC (Transaction Coordinator) - 事务协调者

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

TM (Transaction Manager) - 事务管理器

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

RM (Resource Manager) - 资源管理器

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

Seata AT模式

AT(自动事务)模式是Seata最主推的分布式事务解决方案,它是基于XA演进而来的一种分布式事务模式,所以它同样分为三大模块,分别是TM、RM和TC,其中TM和RM作为Seata的客户端与业务系统集成,TC作为Seata的服务器独立部署。TM表示事务管理器(Transaction Manager),它负责向TC注册一个全局事务,并生成一个全局唯一的XID。在AT模式下,每个数据库资源被当作一个RM(Resource Manager),在业务层面通过JDBC标准的接口访问RM时,Seata会对所有请求进行拦截。每个本地事务进行提交时,RM都会向TC(Transaction Coordinator,事务协调器)注册一个分支事务。

AT模式和XA一样,也是一个两阶提交事务模型,不过和XA相比,做了很多优化。

工作流程

image.png

1.Business主业务通过TM通知TC开启全局事务。

2.Businiess调用的每个分支事务(比如Storage,order,account)需要注册到TC中,并时时汇报状态。

3.通过RM实时汇报事务状态,TC掌握每个分支事务的状态。

4.因为TC实时掌握每个分支事务,一旦某个事务失败,TC可以命令所有分支事务回滚。

可以看出TC就是seat抽离出的一层,用来维护全局和分支事务的状态(这种抽离出一层的方案,分布式组件中到处可见),此图中TC协调三个远程的事务(Storage,Order,Account),Business是主业务代码(TM),开启全局事务,控制总事务,RM资源管理应用在每一个服务中,负责和数据库交互,每一个服务里面对于本地事务的管理通过RM。

notice:

如果分支事务发现失败,默认情况下seata采用AT模式,每个服务的事务维系一个UNDO_LOG (回滚日志表)表,每个分支事务都是已提交的,TC通过每个事务的回滚表将之反向补偿,这整个过程都是自动回滚的。

相关文章

网友评论

    本文标题:分布式组件-seata介绍

    本文链接:https://www.haomeiwen.com/subject/nneocltx.html