FESCAR:Fast & EaSy Commit And Rollback
一、ESCAR是什么?
一个分布式事务解决方案具有较高的性能和易用性微服务架构
我们想象一个传统的应用,由3个模块构成,并且这三个模块使用同一个数据源。
很明显,数据一致性由数据库提供的本地事务就能搞定。
这些将在微服务架构中被改变。3个模块变成了3个服务,每个服务有独立的数据源(参考Database per service)。每个服务的数据一致性由本地事务保证。
但是跨服务的业务呢?如下图:
二、FESCAR怎么做?
FESCAR就是用来解决上面的问题。
首先,如何定义一个分布式事务?
我们认为,一个分布式事务是由一批分支事物组成的全局事务。通常来说,分支事务就是本地事务。
FESCAR有三个基本组件:
Transaction Coordinator(TC):事务协调器,维护着全局事务和分支事务的状态, 它来决定全局的提交还是回滚。
Transaction Manager(TM): 事务管理器,定义全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务。
Resource Manager(RM): 资源管理器,管理分支事务处理的资源,与TC通信以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚.
FESCAR分布式事务管理的一个典型的生命周期
1.TM向TC请求开启一个全局事务,TC生成一个XID,代表了全局事务的ID;
2.通过微服务的调用链将XID被广播出去(绿色箭头);
3.RM向TC注册一个属于XID表示的分布式事务下的本地事务(红色箭头);
4.TM向TC询问是提交还是回滚XID表示的全局事务;
5.TC驱动XID表示的全局事务下的所有分支事务,完成提交或者回滚动作。
三、历史
TXC:Taobao 分布式事物,阿里框架巴巴中间件团队自2014年开始这个项目来满足由应用程序从单体到微服务体系结构变化导致的分布式事务问题,
GTS:全局事物服务,TXC作为阿里巴巴的中间件产品与新名字GTS是自2016年以来出版的。
FESCAR:2019起,基于 TXC 和 GTS 的技术积累,阿里中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。
作者:好多灰
链接:https://www.jianshu.com/p/81f1425ea0bf