FESCAR名字的决方由来:Fast & EaSy Commit And Rollback
FESCAR是啥?
被用在微服务架构中的高性能分布式事务解决方案。
微服务中的阿里案分布式事务问题
让我们想象一个传统的应用,由3个模块构成,重磅并且这三个模块使用同一个数据源。开源很明显,分布数据一致性由数据库提供的式事本地事务就能搞定。
然而,决方一切美好都被在微服务架构中被打破。阿里案3个模块变成了3个服务,重磅每个服务有独立的开源数据源(参考https://microservices.io/patterns/data/database-per-service.html)。每个服务的数据一致性由本地事务保证,但是跨服务的业务呢?如下图所示,某个业务既需要操作库存(Storage),又需要操作订单(Order),还需要操作账户(Account)。
FESCAR怎么做?
首先,如果定义分布式事务?我们认为一个分布式事务是由多个分支事务组成的全局事务,通常来说,分支事务就是本地事务。
FESCAR有三个基本组件:
Transaction Coordinator(TC):事务协调器,维护着全局事务和分支事务的状态, 它来决定全局的提交还是回滚。
Transaction Manager(TM): 事务管理器,定义全局事务的范围:开始一个全局事务,提交或者回滚一个全局事务。
Resource Manager(RM): 资源管理器,管理分支事务处理的资源,与TC通信以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚.
一个典型的FESCAR维护的分布式事务的生命周期如下:
TM向TC请求开启一个全局事务,TC生成一个XID,一个表示全局事务的***ID;
通过微服务的调用链,XID被广播出去(图中绿色线路);
RM向TC注册一个属于XID表示的分布式事务下的本地事务(红色箭头);
TM向TC询问是提交还是回滚XID表示的全局事务;
TC驱动XID表示的全局事务下的所有分支事务,完成提交或者回滚动作。
如下图所示:
参考:https://github.com/alibaba/fescar
责任编辑:张燕妮 来源: 阿飞的博客 阿里巴巴技术开源(责任编辑:焦点)
东阿阿胶(000423.SZ)2020年度业绩扭亏为盈至4328.93万元 基本每股收益0.07元
02月03日碳酸锂71200.00元/吨 相关生产商有西藏矿业(000762)等
中国重汽(3808.HK)一度拉升超10%破顶 成交额放大至1.4亿港元
华润医药(03320.HK):东阿阿胶年度实现净利4328.93万元 基本每股收益0.07元
海航控股发布业绩预告更正公告 2018年预亏30亿至40亿元
新湖中宝:拟发行10亿元公司债券 全部用于偿还未来到期的公司债券