阿里分布式事务框架GTS开源了一个免费社区版Fescar,看到了这个消息内心非常的激动。在微服务系统中,分布式事务一直是痛点,也是难点。社区里也有一些开源的分布式解决方案的框架,比如ByteTCC、LCN,但是这些框架没有一个权威的组织在维护,或多或少大家都有点不敢用。阿里开源的分布式事务解决框架Fescar会不会一统分布式事务江湖,大家拭目以待。
我们现在来看看什么是FESCAR。Fescar项目地址:https://github.com/alibaba/fescar
什么是FESCAR?
FESCAR是一种分布式事务解决方案,具有高性能和易用性的微服务架构。
微服务中的分布式事务问题
在传统的单体应用程序中,假设我们的业务由3个模块构成,分为库存、订单、账户模块。他们使用同一个单个本地数据源。
本地事务可以保证数据的一致性。
微服务架构发生了变化。提到的3个模块设计为3个不同数据源之上的3个服务(每个服务单独的数据库)。本地事务能够保证每个服务中的数据一致性。关注公众号互联网架构师,回复关键字2T,获取最新架构视频
但是在分布式微服务系统总共,整个业务逻辑的一致性如何保证呢?
FESCAR是怎么解决上面提出的问题?
FESCAR为上述问题即分布式事务问题,提供了解决方案。
首先,如何定义分布式事务?
分布式事务是一个全局事务,由一批Branch Transation组成,通常Branch Transation只是本地事务。
在FESACR项目中有3个基本组件:
事务协调员(TC):维护全局和分支事务的状态,推动全局提交或回滚。
事务管理者(TM):定义全局事务的范围:开始全局事务,提交或回滚全局事务。关注公众号互联网架构师,回复关键字2T,获取最新架构视频
资源管理器(RM):管理分支事务处理的资源,与TC通信以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。
FESCAR管理分布式事务的典型生命周期:
TM要求TC开始新的全局事务。TC生成表示全局事务的XID。
XID通过微服务的调用链传播。
RM将本地事务注册为XID到TC的相应全局事务的分支。
TM要求TC提交或回滚XID的相应全局事务。
TC在XID的相应全局事务下驱动所有分支事务以完成分支提交或rollbaking。
历史
TXC:淘宝分布式事务组件。阿里巴巴中间件团队自2014年启动该项目,以满足应用程序架构从单一服务变为微服务所导致的分布式事务问题。
GTS:全局事务服务。TXC作为Aliyun中间件产品,2016年更换新名称GTS。
FESCAR:2019年开源基于TXC / GTS的开源项目FESCAR,以便与社区密切合作,共同成长。