免费的分布式事务来了——阿里巴巴Fescar

简介: 背景每次说起分布式事务相信都是许多开发者的心头痛,分布式事务往往伴随着大量的业务逻辑的侵入,需要写大量的回滚操作的业务流程,而且还生怕哪里漏掉了。而现在,于2019年1月10日,阿里巴巴开源了内部的分布式事务框架——Fescar。

背景

每次说起分布式事务相信都是许多开发者的心头痛,分布式事务往往伴随着大量的业务逻辑的侵入,需要写大量的回滚操作的业务流程,而且还生怕哪里漏掉了。而现在,于2019年1月10日,阿里巴巴开源了内部的分布式事务框架——Fescar。Fescar是Fast Easy Commit And Rollback的缩写。

目前业界的分布式事务分为两种,一是业务0侵入的,使用的是数据库的XA组件,但是缺陷也很明显。所用的数据库必须支持XA组件,另外这种方式锁占用时间长,需要搭配重量级的容器使用,在分布式系统场景中并不合适。二是业务侵入的,例如TCC,目前用得比较多的是这种,也有成熟的方案,只是这样需要开发大量的回滚流程,十分耗费人力物力。而Fescar就是解决了这两个问题,既能做到适配各种关系型数据库,又能业务0侵入。

阿里巴巴内部一直有在做分布式事务的探索,TXC是目前阿里巴巴内部使用的分布式框架,而GTS则是在阿里云上分布式事务,而这次开源的Fescar也是源自这两者,当然开源的是免费的,开源一个月的时间现在Github上已经有5000多颗星了,可见大家对分布式事务有多渴望。

原理

首先先说说什么是分布式事务,以电商购物为例,当消费者购买了下单一件商品时,库存系统会扣减库存,而支付系统会进行扣款,当扣款失败时,库存应该要重新回滚到原来的数量,可是在分布式系统中,系统往往不是使用同一个数据库,因此数据库没法保证本地事务外的事务,这就是分布式事务。

目前流行的TCC分成三个阶段,一是Try,尝试把资源冻结和锁住,若全部服务均成功,则执行Confirm操作,执行真实的写操作,否则执行Cancel,取消资源冻结。TCC伴随着大量的业务逻辑以及需要可靠的MQ支撑,虽然比较成熟,可是需要开发者花大量的心思去开发。

而Fescar作为业务0侵入的框架是如何实现的呢?
image

免费的分布式事务来了——阿里巴巴Fescar
如上图所示(图片来自Github),Fescar由RM、TM、TC组成。

RM是资源管理器,主要是做分支/本地事务的提交和回滚。

TM是事务管理器,主要是确定全局事务的开始和全局事务的提交和回滚。

TC是事务协调器,主要是当TM确定要提交或回滚时协调各个分支事务做相应的操作。

流程是这样的,还是拿回开始的那个例子,当用户下单时,TM会发起全局事务,并向TC注册一个XID作为事务的唯一标志,然后在调用库存系统扣减库存,此时库存系统的RM会向TC注册并执行本地事务,支付系统同理。当支付系统的RM执行失败时,TM会向TC发起全局事务回滚的决议,此时TC会组织两个系统的RM同时进行回滚操作,整个分布式事务完成。

特点

不依赖数据库的协议支持

Fescar的RM是处于应用层,与数据库本身的协议无关,而XA则相反,它也有类似RM的概念,可是它的RM是处于数据库层,这就意味着XA需要强依赖数据库支持XA协议,因此Fescar是非常适合弱耦合的分布式系统的。

锁的时间短

Fescar与XA同样都是两阶段提交,但是区别在于XA是两阶段均结束后才会释放锁,而Fescar若是做全局事务的提交操作则会在阶段一结束后就释放锁,只有是做回滚操作才会两阶段后才释放锁。而大部分场景都是能正常提交的,所以Fescar能保证锁的占用时间控制到最短,这也变相地提高了数据库的qps。(这里可能会有人会问阶段1结束就释放锁不会造成资源会被的事务占用吗,Fescar在这里实际上做了一个全局写操作的隔离,不会出现脏写的情况,这里不展开说)

隔离性

Fescar默认支持读未提交的隔离性,因为主要是考虑到其实大部分场景用这个隔离性就已经足够了。不过官网也支持读已提交的隔离性配置,不过就需要对业务进行侵入了,所以在选型时也要考虑业务本身的需求。

总结

总的来说Fescar是对目前分布式事务版图的一个很好的补充,而且已在阿里巴巴有长时间的成功经验,相信大多数的开发者都可以放心使用。

相关文章
|
3月前
|
缓存 NoSQL Java
Java在大型多人在线游戏(MMO)服务端的运用
大型多人在线游戏(如《魔兽世界》《最终幻想14》《梦幻西游》)的服务端需要同时处理数万玩家的实时交互,包括移动同步、战斗计算、聊天、交易、工会等。
408 0
平台主要配置文件一览表
平台主要配置文件一览表            相关文档的配置和使用在bboss平台和bboss框架相关博客文档中都有说明。  
993 0
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1575 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1942 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
1000 3
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
529 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2567 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
723 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2638 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航

热门文章

最新文章