一架梯子,一头程序猿,仰望星空!
分布式事务面试题 > 内容正文

什么是Seata?Seata事务模式有哪些?


问题简答

Seata是阿里开源的分布式事务中间件,Seata提供了一种简单、可扩展和自主的事务解决方案,可以支持微服务架构中的分布式事务处理。Seata支持AT、TCC、SAGA 和 XA 4种事务模式。

问题详解:

1.AT模式

AT模式是seata基于2pc原理,设计的一种应用层两阶段提交分布式事务方案。

1.1.前提

  • 基于支持本地 ACID 事务的关系型数据库。
  • Java 应用,通过 JDBC 访问数据库。

    提示:就是参与事务处理的服务都用关系数据库,且都是java,才能使用AT模式

1.2.整体机制

AT模式,是用两阶段提交协议的演变而来:

  • 一阶段:业务数据和回滚日志记录在同一个本地事务中提交,释放本地锁和连接资源。
  • 二阶段:
    提交异步化,非常快速地完成。
    回滚通过一阶段的回滚日志进行反向补偿。

AT模式的原理是:在一个分布式事务中,每个服务实例都会记录下该事务的操作日志,并将该操作作为一个补偿操作存储在日志中,如果在后续操作中发现事务出现异常,Seata会将之前执行的操作回滚,并执行相应的补偿操作,从而保证事务的原子性。

2.Seata 4种事务模式对比

模式 优点 缺点
AT 原理简单,易于使用,支持各种存储类型,适用于业务较简单的场景 存在性能瓶颈,存在悬挂事务问题
TCC 拥有更高的灵活性,支持更复杂的业务场景,提供了更高的可靠性和一致性 对业务代码有侵入性,实现较为复杂
Saga 适合长事务,能够处理更加复杂的业务场景,支持异步补偿,对业务代码侵入性较小 状态机的设计较为复杂,对开发人员的要求较高
XA 能够支持跨多个数据库的分布式事务,提供了较高的数据一致性保障 性能较差,不支持所有数据库类型