分布式事务框架_阿里分布式事务框架GTS开源啦!

点击上方“Java后端技术”,选择“置顶或者星标”

每天带你看高清大图哦!

f16c71c9436936db7cc15d26b7fb00ba.png

整理:开源中国

就在9号这天,阿里分布式事务框架GTS开源了一个免费社区版Fescar,看到了这个消息内心非常的激动!在微服务系统中,分布式事务一直是痛点,也是难点。社区里也有一些开源的分布式解决方案的框架,比如ByteTCC、LCN,但是这些框架没有一个权威的组织在维护,或多或少大家都有点不敢用。阿里开源的分布式事务解决框架Fescar会不会一统分布式事务江湖,大家拭目以待!

我们现在来看看什么是FESCAR。Fescar项目地址:

https://github.com/alibaba/fescar

一、什么是Fescar

FESCAR(Fast & Easy Commit And Rollback) 是一个用于微服务架构的分布式事务解决方案,它的特点是高性能且易于使用,旨在实现简单并快速的事务提交与回滚。

二、微服务架构中的分布式事务问题

从传统的单体应用说起,假设一个单体应用的业务由 3 个模块构成,三者使用单个本地数据源。

6e80285c6758725f455b687f63dbf4a2.png

这样的话本地事务很自然就可以保证数据一致性。

但是在微服务架构中就不这么简单了,这 3 个模块被设计为 3 个不同数据源之上的 3 个服务,每个服务对应一个数据库。

本地事务当然也可以保证每个服务中的数据一致性,但是扩展到整个应用、整个业务逻辑范围来看,情况如何呢?

5c14713abc3a093acd696df99fe0f63c.png

三、FESCAR 机制

FESCAR 就是用于解决上述微服务架构中的事务问题的解决方案。

f310b29e8f914c596cd3624b14e20171.png

如下图所示,分布式事务是一个全局事务(Global Transaction),由一批分支事务(Branch Transation)组成,通常分支事务只是本地事务。

76179619c6a90b81f90e708f208495b5.png

FESCAR 中有三大基本组件:

  • Transaction Coordinator(TC):维护全局和分支事务的状态,驱动全局事务提交与回滚。

  • Transaction Manager(TM):定义全局事务的范围:开始、提交或回滚全局事务。

  • Resource Manager(RM):管理分支事务处理的资源,与 TC 通信以注册分支事务并报告分支事务的状态,并驱动分支事务提交或回滚。

3094b88c09ce946d3bcfc272ba3bc90c.png

FESCAR 管理分布式事务的典型生命周期:

  1. TM 要求 TC 开始新的全局事务,TC 生成表示全局事务的 XID。

  2. XID 通过微服务的调用链传播。

  3. RM 在 TC 中将本地事务注册为 XID 的相应全局事务的分支。

  4. TM 要求 TC 提交或回滚 XID 的相应全局事务。

  5. TC 驱动 XID 的相应全局事务下的所有分支事务,完成分支提交或回滚。

44b654d73c5b64670ebe66ea0526b7ca.png

四、演进历史

  • TXC:Taobao Transaction Constructor,阿里巴巴中间件团队自 2014 年起启动该项目,以满足应用程序架构从单一服务变为微服务所导致的分布式事务问题。

  • GTS:Global Transaction Service,2016 年 TXC 作为阿里中间件的产品,更名为 GTS 发布。

  • FESCAR:2019 年开始基于 TXC/GTS 开源 FESCAR。

五、还在等什么

这么好的事情还在等什么!小编因此高兴的一夜未眠!抓紧时间搞一波试试了!

最近热文阅读:

1、为什么越来越多的开发者选择使用Spring Boot?

2、为什么要有Spring AOP?

3、数据库分库分表策略的具体实现方案!

4、Java大型互联网公司经典面试题,论JDK源码的重要性的无限思考!

5、关于MySQL你要知道的知识点!

6、面试必备:如何将一个长URL转换为一个短URL?

7、假如全世界所有程序员组成一个王国!

9ab7a5b59fab8ad1a6c65f0bfba95b22.png

关注公众号,你想要的Java都在这里!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/409496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python3 readexcel pandas问题,使用python中的pandas中的read_excel函数将日期保留为字符串...

Python 2.7.10Tried pandas 0.17.1 -- function read_excelTried pyexcel 0.1.7 pyexcel-xlsx 0.0.7 -- function get_records()在Python中使用pandas时,是否可以读取excel文件(格式:xls | xlsx)并将包含 date 或 date time 值的列保留为 strings 而不…

SqlServer开发利器—SQL Prompt5

智能提示 SQL Prompt5的智能提示比SqlServer自带的要好很多,而且可以设置让关键字自动大写,对于数据库中的对象可以很方便的看到对象的创建脚本,如下图: 格式化代码 有时候我们把从程序中跟踪到的代码或是从SQL跟踪器中跟踪到的代…

php 数据类型伪类型,PHP之伪类型与变量

本文档中使用的伪类型与变量伪类型(pseudo -types)是PHP文档里用于指示参数可以使用的类型和值,请注意,它们不是PHP语言里原生类型,所以不能把伪类型用于自定义函数里面的类型约束(typehint)。mixedmixed说明一个参数可以接受多种不同的(但不…

unity text不能刷新_Unity使用ComputerShader实时压缩RT!

背景computer shader最近突然变得异常火热,原神和UE开发者大会多次被人提到通过computershader对手机平台的优化。一方面得益于最近手机硬件的提升,对computer shader的支持和性能提升。另一方面,新出的游戏对于画面质量的要求越来越高&#…

SVN Could not open the requested SVN filesystem解决办法

如果TortoiseSVN的版本过高,而SVN服务器的版本过低有可能造成,创建的资源库无法访问(SVN Could not open the requested SVN filesystem)。因此版本要相符。当然为避免上面的问题也可以直接用命令来创建,在命令行窗口&…

zip转直链php,蓝奏网盘直链转换器

蓝奏网盘直链转换器是一款非常不错的网盘直链转换工具,能够帮助用户批量进行蓝奏云网盘链接转换,可以自定义设置转换线程数,让用户能够直接下载分享的文件,下载速度非常快,有需要的用户不要错过了,赶快来下…

hdu 1695

题目:http://acm.hdu.edu.cn/showproblem.php?pid1695 给出a b c d k 在 [a,b] [c,d]内各找一个数,使得gcd(x,y) k,也就是说 gcd(x / k, y / k) 1,所以就是在 [1,b / k] [1, d / k]中找互质的对数。容斥原理和欧拉函数的应用&a…

python流量监控_用python中的pcapy实现网络流量监控

我写了一个简单的网络流量监视器来获得B/s和/或总数据传输率(B)。然而,当我用ftp(使用Total Commander)传输一个文件来测试它时,我不能让它把Total transfer作为文件大小来衡量。它总是比实际尺寸小得多。我不确定我是不是做错了什么。。我设置的BPF过滤…

php cve-2014-9427漏洞,WEB应用漏洞-温州特种设备检测研究院.DOC

WEB应用漏洞-温州特种设备检测研究院附件3:重点网站技术检测报告重点网站技术检测报告网站属地:浙江温州网站名称:温州市特种设备检测研究院域名:_重点网站技术检测报告经技术检测发现,你单位网站(地址:)存…

c#左移、右移基础

转:http://www.cnblogs.com/songsz1/archive/2012/10/16/2725983.html转载于:https://www.cnblogs.com/piaopiao7891/archive/2012/10/16/2726358.html

oracle导出审计表,Oracle审计表AUD$处理方法

Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功1. 查询表,然后truncateselect count(*) from aud$;truncate table aud$;select count(*) from aud$;2.创建表空间create tablespace adttbsdatafile /oracle/OMT/admin/oradata/aud…

python转c报错no module named_python异常No module named 'win32com'

异常原因:python调用com组件操作office将word转pdf报错如下Traceback (most recent call last):File "D:/wordTest/wordTest.py", line 2, in from win32com import clientModuleNotFoundError: No module named win32comTraceback (most recent call last):File &qu…

如何清除tomcat缓存

用tomcat容器&#xff0c;大家可能会发现这样的问题&#xff0c;修改jsp文件后&#xff0c;但用IE打开 依然是以前的Jsp的页面。 出现这种现象的原因主要是tomcat缓存的原因。 解决办法如下: 在jsp文件头加上 <meta http-equiv"Expires" content"0"&…

sql 链接到oracle数据库,通过MSSQL连接服务器连接至Oracle数据库

前言有很多时候&#xff0c;我们需要MSSQL与Oracle进行跨库查询或数据交互。本篇随笔将阐述如何通过MSSQL的连接服务器连接至Oracle数据库&#xff0c;并且读取数据的示例。具体步骤首先需要到Oracle的官网下载Oracle Client(简称OCT)&#xff0c;也就是通常大家所说的Oracle客…

python一看就很厉害的代码_Python学习教程:怎么写出让人看起来就很舒服的代码?...

Python学习教程&#xff1a;怎么写出让人看起来很优雅舒服的代码&#xff1f;让人眼前一亮&#xff01;很多新手在开始学一门新的语言的时候&#xff0c;往往会忽视一些不应该忽视的细节&#xff0c;比如变量命名和函数命名以及注释等一些内容的规范性&#xff0c;久而久之养成…