分布式事务框架_阿里分布式事务框架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,一经查实,立即删除!

相关文章

SqlServer开发利器—SQL Prompt5

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

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

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

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…

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

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

oracle更新数据没有变化,往oracle里面写入数据,怎么表空间都没有变化

当freelist里面没有记录了,也就是块空间已经没有办法容纳新的记录了,这时候就需要扩展extent.这里有一个脚本来查看段空间使用情况。[php]create or replace procedure show_space( p_segname in varchar2,p_owner in varchar2 default user,p_type …

docker构建oracle集群,docker 构建 oracle数据库 镜像-Go语言中文社区

前言之前docker 部署的 oracle 镜像,突然从 dockerhub 下架了。所以没办法,只能自己打包一个oracle 数据库的镜像。找来找去,其实oracle 自身就提供了oracle 的产品 docker 构建脚本。所以直接按照oracle 官方的docker 构建仓库的说明打包。o…

获取图片倒影效果

获取图片倒影效果 View Code 1 /**2 * 获取传入图片的倒影3 * 4 * param originalImage 原始图片5 * param reflectionGap 原始图片与倒影图片的间距6 * param percentage 倒影是原图的高度的百分比 . 0< percentage < 1 7 * param o…

三星关闭shell提示_啄木鸟家庭维修|三星滚筒洗衣机4c故障代码

三星滚动洗衣机是很多用户都会安装的一种洗衣机&#xff0c;不管什么牌子的洗衣机&#xff0c;使用一段时间都可能出现一些故障&#xff0c;需要维修洗衣机。三星滚筒洗衣机4c就是一个常见洗衣机故障。下面介绍三星滚筒洗衣机4c故障代码。三星滚筒洗衣机4c故障代码表示进水故障…

mysql 写入慢_MySQL主从,你遇到过哪些问题?

上篇文章介绍了单机环境下的MySQL主从异步复制和主从半同步复制的搭建过程。搭建过程很简单&#xff0c;但是在实际使用过程中&#xff0c;更多的是解决问题&#xff0c;本篇文章将介绍一下MySQL主从复制中常见的问题以及如何定位问题和如何解决问题。1、可能的原因如下(1)主从…