关于开源分布式事务中间件Fescar,我们总结了开发者关心的13个问题

开源分布式事务中间件 Fescar 自1月10日上线v0.1版本以来,受到了开发者们的极大关注(watch249,star3005,fork649,社区讨论的issue58,数据统计于1月17日14:00),可见,天下苦分布式事务久矣。

为此,我们收集了大家在社区(Github)和社群(钉钉群&微信群)关注的核心问题,总结如下,并给出回复。

Q1:Fescar 的发展经历了哪些历程?和阿里云全局事务服务GTS之间是什么关系?

A1:阿里巴巴是国内最早一批进行应用分布式(微服务化)改造的企业,所以很早就遇到微服务架构下的分布式事务问题。

  • 2014 年

阿里巴巴中间件团队发布TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。

  • 2016 年

TXC 经过产品化改造,以GTS(Global TransactionService)的身份上线阿里云,成为当时业界唯一一款云上分布式事务产品,以阿里云公有云或专有云解决方案的形式,交付给众多外部客户。

  • 2019 年

基于 TXC 和 GTS 的技术积累,阿里巴巴中间件团队发起了开源项目Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。

TXC/GTS/Fescar一脉相承,为解决微服务架构下的分布式事务问题交出了一份与众不同的答卷。

Q2:Fescar 有哪些适用场景?

A2:Fescar 的愿景是让分布式事务的使用像现在本地事务的使用一样简单、高效,最终的目标是希望可以适用于所有的分布式事务场景。目前,核心的 AT 模式适用于构建于支持本地 ACID 事务的关系型数据库。非关系型数据库类资源的管理,通过 MT 模式来支持。AT 模式与 MT 模式完全兼容,所以可以在同一个分布式事务中,同时管理两类资源。

Q3:目前有已经有一些其他的分布式事务开源方案,Fescar 和他们之间有哪些区别?和JTA支持分布式事务有哪些区别?

A3:既有的分布式事务解决方案按照对业务侵入性分为两类,即:对业务无侵入的和对业务有侵入的。

  • 业务无侵入的方案

既有的主流分布式事务解决方案中,对业务无侵入的只有基于 XA 的方案(注:问题中提到的 JTA 是XA 方案的 Java 版本),但应用XA 方案存在 3 个方面的问题:

1、要求数据库提供对 XA 的支持。如果遇到不支持 XA(或支持得不好,比如 MySQL 5.7 以前的版本)的数据库,则不能使用。

2、受协议本身的约束,事务资源(数据记录、数据库连接)的锁定周期长。长周期的资源锁定从业务层面来看,往往是不必要的,而因为事务资源的管理器是数据库本身,应用层无法插手。这样形成的局面就是,基于 XA 的应用往往性能会比较差,而且很难优化。

3、已经落地的基于 XA 的分布式解决方案,都依托于重量级的应用服务器(Tuxedo/WebLogic/WebSphere 等),这是不适用于微服务架构的。

  • 侵入业务的方案

实际上,最初分布式事务只有 XA 这个唯一方案。XA 是完备的,但在实践过程中,由于种种原因(包含但不限于上面提到的3 点)往往不得不放弃,转而从业务层面着手来解决分布式事务问题。比如:

  • 基于可靠消息的最终一致性方案
  • TCC
  • Saga

都属于这一类。这些方案的具体机制在这里不做展开,网上这方面的论述文章非常多。总之,这些方案都要求在应用的业务层面把分布式事务技术约束考虑到设计中,通常每一个服务都需要设计实现正向和反向的幂等接口。这样的设计约束,往往会导致很高的研发和维护成本。

不可否认,侵入业务的分布式事务方案都经过大量实践验证,能有效解决问题,在各行种业的业务应用系统中起着重要作用。但回到原点来思考,这些方案的采用实际上都是迫于无奈。

回到问题:

与基于消息的最终一致、TCC、Saga等业务逻辑侵入方案的不同在于,Fescar 的设计初衷就是保持对业务的非侵入性,不要求业务层面按照分布式事务的特定场景来设计正向和反向的两套(甚至多套)业务逻辑。这方面的差别就不展开了。

与 XA 的区别在于,设计了一套不同与 XA 的两阶段协议,在保持对业务不侵入的前提下,保证良好的性能,也避免了对底层数据库协议支持的要求。可以看作是一套轻量级的XA 机制。具体的差别如下:

  • 架构层次

XA方案的 RM 实际上是在数据库层,RM本质上就是数据库自身(通过提供支持 XA 的驱动程序来供应用使用)。

而 Fescar 的RM 是以二方包的形式作为中间件层部署在应用程序这一侧的,不依赖与数据库本身对协议的支持,当然也不需要数据库支持XA 协议。这点对于微服务化的架构来说是非常重要的:应用层不需要为本地事务和分布式事务两类不同场景来适配两套不同的数据库驱动。

这个设计,剥离了分布式事务方案对数据库在协议支持上的要求。

  • 两阶段提交

先来看一下 XA 的2PC 过程。

无论 Phase2 的决议是commit 还是 rollback,事务性资源的锁都要保持到Phase2 完成才释放。

再看 Fescar 的2PC 过程。

分支事务中数据的 本地锁 由本地事务管理,在分支事务 Phase1 结束时释放。

同时,随着本地事务结束,连接 也得以释放。

分支事务中数据的 全局锁 在事务协调器侧管理,在决议 Phase2 全局提交时,全局锁马上

可以释放。只有在决议全局回滚的情况下,全局锁 才被持有至分支的 Phase2 结束。

这个设计,极大地减少了分支事务对资源(数据和连接)的锁定时间,给整体并发和吞吐的提升提供了基础。

Q4:Fescar 支持 Dubbo 的哪些版本?

A4:所有版本。

Q5:Fescar 支持 Spring Cloud么?

A5:Fescar 与微服务框架的接口点在于,需要把事务的唯一标识 XID(一个字符串)通过微服务框架的服务调用间调用的机制中,透明地传递,并通过 Fescar 的 API 来绑定(或解绑)到应用的线程上下文中。(机制可以参考内置的对 Dubbo 支持的实现 com.alibaba.fescar.dubbo.TransactionPropagationFilter)所以,本质上这个问题不是支不支持 Spring Cloud,而是如何支持 Spring Cloud 中选用的服务调用机制。目前正在和 Spring Cloud Alibaba 的同学合作,准备在v0.5.x版本(或更早)发布对 Spring Cloud默认的支持。同时,非常欢迎社区的朋友参与进来,贡献包括 Spring Cloud 在内的各类微服务框架的支持。

Q6:Fescar 是否支持本地跨库多数据源?除了关系型数据库,是否还支持NoSQL数据库?

A6:本地跨多数据源同样是支持的,在 Fescar 的架构中,同一个服务中的多个数据源与跨服务的多个数据源,没有本质区别。AT 模式目前仅限于对关系型数据库的支持(本身具备ACID 事务支持),后面会发布出来的 MT 模式可以支持 NoSQL 这类本身不具备本地事务支持的资源。

Q7:Fescar 现在开源的是AT模式,MT模式暂时不支持,什么时候会开源?

A7:当前 0.1.0 版本只是把 Fescar 最核心的 AT 模式的最小集发布出来,一方面是按开源的规划和架构的重构进展,另一方面也是希望通过最小集版本,让用户和开发者社区更容易理解到我们核心的设计思路,让更多人比较容易地参与进来建设,而不是完全由阿里巴巴主导,仅仅把我们的整套方案开源出来给大家用而已。阿里巴巴在分布式事务上的技术积累,我们会通过 Fescar 项目毫无保留地贡献给社区,所有功能特性都会按规划和社区的反馈陆续开源出来。MT 按初步的计划,会在 0.5.x 版本发布。

Q8:Fescar 什么时候提供HA cluster,单节点的server的瓶颈如何处理?

A8:按初步的计划,HA Cluster 会在 0.5.x 版本发布,解决单机部署的单点问题。

Q9:因网络中断、网张闪断、节点宕机和超时等引起的异常,Fescar会提供相应的补偿措施么?

A9:这些异常情况的处理是分布式事务解决方案的基本要求,Fescar 同样也是提供了整套方案来处理各类异常场景。这方面的具体机制会在 HA Cluster 版本发布时,给出全面的分析介绍。

Q10:Fescar框架中,如何监控分布式事务?

A10:监控是非常重要的一块儿内容。TXC 和 GTS 的监控在阿里巴巴内部使用了很多基础设施的辅助。而在开源版本中,我们还没有一个现成的监控方案。大体上,监控的基础是两个方面:一方面是日志,通过日志的采集和处理,可以形成一个完整的事务链路,这些数据对于业务层面的分析和调优是重要的参考依据。另一方面是 API,Fescar 会提供一套管控 API,用于对运行时事务的管理。我们后续会把这两方面的数据格式、部署形态及接口整理出来,希望和社区来共建监控这个重要的方面。

Q11:Fescar 的roadmap 有了么?

A11:目前最新的roadmap如下:

v0.1.0

  • 微服务框架支持: Dubbo
  • 数据库支持: MySQL
  • 基于 Spring AOP 的 Annotation
  • 事务协调器: 单机版本

v0.5.x

  • 微服务框架支持: Spring Cloud
  • MT 模式
  • 支持 TCC 模式事务的适配
  • 动态配置和服务发现
  • 事务协调器: 高可用集群版本

v0.8.x

  • Metrics
  • 控制台: 监控/部署/升级/扩缩容

v1.0.0
General Availability: 生产环境适用

v1.5.x

  • 数据库支持: Oracle/PostgreSQL/OceanBase
  • 不依赖 Spring AOP 的 Annotation
  • 热点数据的优化处理机制
  • RocketMQ 事务消息纳入全局事务管理
  • NoSQL 纳入全局事务管理的适配机制
  • 支持 HBase
  • 支持 Redis

v2.0.0
支持 XA

当然,项目迭代演进的过程,我们最重视的是社区的声音,路线图会和社区充分交流及时进行调整。

Q12:Fescar 官网什么时候上线?

A12:Fescar 官方域名已经注册,官网将采用静态开源站点搭建工具Docsite「传送门」进行搭建,logo 已经设计并将于近期公布。

Q13:如何加入 Fescar 社区,进行贡献,已经摩拳擦掌了。

A13:我们非常欢迎大家通过各种形式参与到我们项目的建设中,包括但不限于:

  • 架构设计
  • 模块设计
  • 代码实现
  • Bug Fix
  • Demo样例
  • 文档、网站和翻译

具体的参与方法可以参见我们项目中的CONTRIBUTING 指引,或与 @eternaltingting@163.com 联系。实际上,我们并不拘泥于贡献的形式,开发者提出的每一个 issue,无论是Bug Report、改进建议或者甚至是问题咨询都代表着对项目的关注和帮助。希望 Fescar 项目和社区一起健康成长,成为分布式事务领域一个优秀的解决方案。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

计算机桌面图标变成腾讯图标,桌面图标变成了未知图标

在电脑日常使用生活中,有时候会遇到桌面图标显示不正常,变成未知图标或者白色。遇到这种情况怎么办呢?今天就让我来和大家分享一下我的经验。首先,产生这种问题的原因,有如下几种:• 电脑桌面图标缓存导致的…

云+X案例展 | 民生类:基于AWS PaaS构建基础集团企业级中台

本案例由浪潮投递并参与评选,CSDN云计算独家全网首发;更多关于【云X 案例征集】的相关信息,点击了解详情丨挖掘展现更多优秀案例,为不同行业领域带来启迪,进而推动整个“云行业”的健康发展。上海市基础工程集团有限公…

互联网下半场的角逐,玩转轻资产的大数据服务 | 阿里云栖开发者沙龙大数据专场(北京站)干货集锦

2019年1月18日下午,一个晴冷的冬日,由阿里巴巴MaxCompute开发者社区和阿里云栖社区联合主办的“阿里云栖开发者沙龙大数据技术专场”走近北京联合大学。当日,近200名大数据开发者和爱好者现场参与了本次活动,同时也有1800多名开发…

日志服务与SIEM(如Splunk)集成方案实战

背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心(SOC)中。 名词解释 LOG(SLS) - 阿里云日志服务,简…

行,Python终于跌神坛了!程序员:活该!你敢来评论吗...

Python还有“敌人”吗?最近网络上一则帖子吸引了笔者,大意内容为:据说A是有2年多经验的Python工程师,面一个公司相关的岗位,由于人手紧缺,所以只问了一个框架,就按笔者提的29K办理了入职。对此&…

jdk1.6集成activemq的2种方式

文章目录一、maven方式1. 依赖2. 发送端3. 接收端4. 工具类二、引入jar方式2.1.下载jar2.2. 按需导入三、添加账号密码一、maven方式 1. 依赖 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-core</artifactId><v…

plsql 快捷键设置

文章目录1. 创建shortcuts.txt2. 添加自定义内容3. plsql添加配置文件1. 创建shortcuts.txt 路径&#xff1a; 进入PLSQL 的PlugIns目录下面 D:\software\PLSQL Developer\PlugIns\shortcuts.txt2. 添加自定义内容 iINSERT uUPDATE sSELECT fFROM wWHERE oORDER BY dDELETE …

数据中心“容灾”和“备份”的区别

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据中心运行突发故障(如&#xff1a;天灾不可避免的灾难)是无法预测的&#xff0c;计算机里的数据就像扫雷游戏一样&#xff0c;十面埋伏充满雷区&#xff0c;随时都有可能Game Over&#xff0c;容灾备份就是数据安全的最后防线&am…

PAI通过流式机器学习算法解决实时热点新闻挖掘案例

打开新闻客户端&#xff0c;往往会收到热点新闻推送相关的内容。新闻客户端作为一个承载新闻的平台&#xff0c;实时会产生大量的 新闻&#xff0c;如何快速挖掘出哪些新产生的新闻会成为成为热点新闻&#xff0c;决定着整个平台的新闻推荐质量。 如何从平台中海量的新闻素材中…

2017计算机等级考试试题,2017年计算机二级考试练习题及答案

2017年计算机二级考试练习题及答案计算机二级考试是用于考查应试人员计算机应用知识与技能的全国性计算机水平考试&#xff0c;下面是小编整理的二级考试练习题&#xff0c;欢迎大家练习&#xff01;(1)在以下数据库系统(由数据库应用系统、操作系统、数据库管理系统、硬件四部…

如何使用阿里云ARMS轻松重现用户浏览器问题

客户投诉不断&#xff0c;本地却无法重现&#xff1f; 页面加载较慢是用户经常会反馈的问题&#xff0c;也是前端非常关注的问题之一。但定位、排查解决这类问题就通常会花费非常多的时间&#xff0c;主要原因如下&#xff1a; 页面是在用户端的浏览器上加载执行&#xff0c;…

云+X案例展 | 民生类:智领云数据中台为“健康武汉”增砖添瓦

本案例由智领云投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。与前一个十年相比&#…

一枚戒指,一场仪式,这件事阿里巴巴坚持了15年

为入职满五年的员工举行盛大仪式&#xff0c;为他们每个人戴上私人订制的戒指&#xff0c;是阿里巴巴坚持了15年“五年陈”的传统。1月22日&#xff0c;阿里集团为最新一季的“五年陈”们举行了授戒仪式。 2018五年陈小档案 2018年&#xff0c;有1867位同学新晋加入五年陈的队…

云+X案例展 | 金融类:荣之联助力君康人寿构建新一代数据中心

本案例由荣之联投递并参与评选&#xff0c;CSDN云计算独家全网首发&#xff1b;更多关于【云X 案例征集】的相关信息&#xff0c;点击了解详情丨挖掘展现更多优秀案例&#xff0c;为不同行业领域带来启迪&#xff0c;进而推动整个“云行业”的健康发展。近年来&#xff0c;互联…

计算机专业实践试题,计算机专业实践综合试题答案..doc

2011年青岛市高职对口第二次模拟考试计算机类专业实践综合试题答案及评分标准一、单项选择题(本大题共50个小题&#xff0c;每小题2分&#xff0c;共100分)12345678910CADCCBBDCC11121314151617181920DBDDBBCDDC21222324252627282930BACBCCBCDA31323334353637383940BACBBCDBDA4…

MaxCompute studio与权限那些事儿

背景知识 MaxCompute拥有一套强大的安全体系&#xff0c;来保护项目空间里的数据安全。用户在使用MaxCompute时&#xff0c;应理解权限的一些基本概念&#xff1a; 权限可分解为三要素&#xff0c;即主体&#xff08;用户账号或角色&#xff09;&#xff0c;客体&#xff08;…

集群、分布式、微服务概念和区别

概念: 集群是个物理形态&#xff0c;分布式是个工作方式。 1.分布式&#xff1a;一个业务分拆多个子业务&#xff0c;部署在不同的服务器上 2.集群&#xff1a;同一个业务&#xff0c;部署在多个服务器上 分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中…

机器学习数据集哪里找:最佳数据集来源盘点

很难找到一个特定的数据集来解决对应的机器学习问题&#xff0c;这是非常痛苦的。下面的网址列表不仅包含用于实验的大型数据集&#xff0c;还包含描述、使用示例等&#xff0c;在某些情况下还包含用于解决与该数据集相关的机器学习问题的算法代码。 1 -Kaggle数据集 网址&am…

腾讯游戏与NVIDIA合作发布START云游戏服务

腾讯游戏和NVIDIA于今日宣布了一项将电脑游戏带入云端的合作。 NVIDIA的GPU技术为腾讯游戏的START云游戏服务赋力&#xff0c;该服务已从今年初开始进入测试阶段。START使游戏玩家可以随时随地&#xff0c;即使是在配置不足的设备上也能玩AAA游戏。腾讯游戏计划将扩展其云游戏…

pandas指南:做更高效的数据科学家

Python是开源的&#xff0c;所以有很多开源固有的问题。如果你是Python新手&#xff0c;很难知道针对特定任务的包哪个是最好的。你需要有经验的人来告诉你。今天我要告诉你们的是&#xff1a;在数据科学中&#xff0c;有一个软件包是你们绝对需要学习的&#xff0c;那就是pand…