Seata (Simple Extensible Autonomous Transaction Architecture) 【2019年4月从Fescar更名为Seata】is an easy-to-use, high-performance, java based, open source distributed transaction solution.
Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。
术语
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚。
TM (Transaction Manager) - 事务管理器
定义全局事务的范围:开始全局事务、提交或回滚全局事务。
RM (Resource Manager) - 资源管理器
管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
事务模式
AT
Automatic Transaction Mode
基于 支持本地 ACID 事务 的 关系型数据库:
- 一阶段 prepare 行为:在本地事务中,一并提交
业务数据
更新和相应回滚日志
记录。 - 二阶段 commit 行为:马上成功结束,自动 异步批量清理
回滚日志
。 - 二阶段 rollback 行为:通过回滚日志,自动 生成
补偿
操作,完成数据回滚。
TCC
(Branch) Transaction Mode
参见实践TCC
SAGA
Saga模式是SEATA提供的长事务解决方案,在Saga模式中,业务流程中每个参与者都提交本地事务
,当出现某一个参与者失败则补偿
前面已经成功的参与者,一阶段正向
服务和二阶段补偿
服务都由业务开发实现。