Seata支持四种不同的分布式事务解决方案:
● XA
● TCC
● AT
● SAGA
这四种方案可以满足CP和AP的需求,比如:XA可以实现CP即强一致性,AT可以实现AP最终一致性。
我们项目用的AT模式,它的工作原理是:
Seata有一个TC事务协调器,负责控制所有分支事务。
我们在分布式事务开启的方法上使用@GlobalTransactional 开启全局事务,向TC报告开启全局事务。
Seata的TM请求每个分支事务提交事务,分支提交事务完成向TC报告事务提交结果。
如果存在一个失败一个成功的情况,会让成功的分支事务回滚。
回滚的机制:在分支事务提交事务后生成undolog日志,根据undolog日志生成反向SQL,执行该反向SQL实现回滚。