FESCAR:阿里重磅开源分布式事务解决方案
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
FESCAR:阿里重磅开源分布式事务解决方案相关推荐
- 阿里开源分布式事务解决方案 Fescar 全解析
广为人知的阿里分布式事务解决方案:GTS(Global Transaction Service),已正式推出开源版本,取名为"Fescar",希望帮助业界解决微服务架构下的分布式事 ...
- 阿里开源分布式事务解决方案 Fescar
微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并 ...
- 刚柔并济的开源分布式事务解决方案
导读 相比于数据分片方案的逐渐成熟,集性能.透明化.自动化.强一致.并能适用于各种应用场景于一体的分布式事务解决方案则显得凤毛麟角.基于两(三)阶段提交的分布式事务的性能瓶颈以及柔性事务的业务改造问题 ...
- Java 的开源分布式事务解决方案框架 fescar
fescar 全称为:Fast & Easy Commit And Rollback.它是一个完全基于 Java 的分布式事务解决框架.fescar 拥有很高的性能,并且使用非常的方便! FE ...
- 阿里开源分布式事务seata demo示例(原Fescar)
文章目录 简介 运行官方demo 事务回滚原理简介 备注:阿里分布式事务中间件seata原名fescar.seata是后来改的名称.本文写的比较老,不做修改. https://github.com/a ...
- 详解阿里开源分布式事务框架Seata
Seata发展历史 笔者于2014年开始着手解决阿里巴巴集团内部业务的分布式事务问题,从0到1研发一个支持非侵入模式(内部称之为AT模式,即自动模式)和TCC模式(内部称之为MT模式,即手动模式)的分 ...
- 常用的分布式事务解决方案
首页 博客 专栏·视频 下载 论坛 问答 代码 直播 能力认证 高校 会员中心 收藏 动态 消息 创作中心 常用的分布式事务解决方案 凌澜星空 2018-03-11 14:44:55 75315 ...
- 关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题
开源分布式事务中间件 Fescar 自1月10日上线v0.1版本以来,受到了开发者们的极大关注(watch249,star3005,fork649,社区讨论的issue58,数据统计于1月17日14: ...
- 微服务架构下分布式事务解决方案——阿里GTS
1 微服务的发展 微服务倡导将复杂的单体应用拆分为若干个功能简单.松耦合的服务,这样可以降低开发难度.增强扩展性.便于敏捷开发.当前被越来越多的开发者推崇,很多互联网行业巨头.开源社区等都开始了微服务 ...
最新文章
- Direct3D Draw函数 异步调用原理解析
- 游戏数据的捕捉(郁金香学习笔记)
- 从需求的角度去理解Linux系列:总线、设备和驱动
- [architecture]-Generic Timer
- 群辉NAS+KODI (二)----NAS文件配置+电视安装kodi安装配置
- boost::format模块format的基本用法示例
- linux中利用脚本编写数组,shell脚本编程之数组
- C语言试题九十二之输入数据有多行,第一行是一个整数n,表示测试用例的个数,后面跟着n行 ,每行包括一个由字母和数字组成的字符串
- leetcode114. 二叉树展开为链表
- 开发转测试没人要_新人如何快速的进入融入软件测试行业?
- 好看高端的立体表白相册程序
- 案例分享丨红外自动感应门设计与实现详解
- 迪迦奥特曼“亲临”发布会!一加9R今日发布:价格成唯一悬念
- linux基础命令一、
- appscan无法连接到服务器_GTA5无法连接R星服务器怎么解决?无法连接解决方法
- 目标规划运筹学例题doc_7.运筹学之目标规划(胡运权版).doc
- 计算机网络速度慢原因,上网网速变慢的几个原因及解决方法
- 【起航计划ObjC 002】印第安老斑鸠ObjC的幻想 ---- Ubuntu下安装并使用MAC虚拟机
- 自然语言处理(NLP):10 基于WordAVGModel 增加Attention机制情感分析
- MySQL数据库基本命令