分布式事务

143 阅读2分钟

1.什么是分布式事务

当项目采用微服务框架搭建时,一个请求涉及到多个微服务调用各自的数据库(业务跨多个服务实现),或者一个微服务模块中调用不同的数据库(业务跨多个数据源实现)的情况,此时传统的事务没有办法保证各个数据库的数据逻辑保持一致,就会产生分布式事务的问题.

2、Seata解决分布式的方案有哪几种?

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。 1728789751805.png Seata的核心工作流程很简单,在TC开启全局事务后,各个分支事务先注册,当请求访问这个事务时,执行代码逻辑并将运行结果发送到TC,等这个全局事务中的所有分支事务全部执行完毕后,TC检查各分支事务的运行结构,全部成功就提交,只要有一个失败就开启回滚,还原数据,保证数据的一致性.

3、Seata的AT模式的执行流程

Seata支持四种不同的分布式事务解决方案:

  • XA
  • TCC
  • AT
  • SAGA

XA模式就是所有分支事务全部执行到最后一步,但不提交,只向TC报告运行状态,TC根据运行结果通知各分支事务提交或回滚. 2.png XA模式的优点是: 1.事务的强一致性,满足ACID原则 2.常用数据库都支持,实现简单,并且没有代码侵入

XA模式的缺点是: 1.因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差 2.依赖关系型数据库实现事务

AT模式是分支事务运行代码并提交,调用undolog记录更新前后快照,TC要求提交就删除log,要求回滚就根据log恢复更新前数据. 3.png AT模式与XA模式最大的区别在于: 1.XA模式一阶段不提交事务,锁定资源;AT模式一阶段直接提交,不锁定资源。 2.XA模式依赖数据库机制实现回滚;AT模式利用数据快照实现数据回滚。 3.XA模式强一致;AT模式最终一致

可见,AT模式使用起来更加简单,无业务侵入,性能更好。因此企业90%的分布式事务都可以用AT模式来解决。