现代IT应用中,服务化SOA作为主流的技术架构被广泛应用到各种信息系统。原来一个系统被分拆成若干个服务的集合,产生了跨服务调用的分布式事务问题。随着Dubbo、SpringCloud等微服务框架的流行,服务被进一步细分,跨服务调用以及服务的嵌套调用越来越广泛。分布式事务已经成为现代分布式系统中必须面对并解决的难题。为此,今天给大家介绍下阿里巴巴为解决服务调用中的事务问题推出的解决方案GTS。

  1 GTS简介

  全局事务服务(GTS,Global Transaction Service)是一款高性能、高可靠、接入简单的分布式事务中间件,可以为多服务调用或跨数据库访问中产生的事务问题提供一站式解决方案。其主要包括客户端、资源管理器和事务协调器三部分。客户端主要完成事务的发起与结束。资源管理器,完成分支事务的开启、提交、回滚等操作。事务协调器是GTS的服务端,主要负责分布式事务的整体推进,事务生命周期的管理。

  2 应用场景

  GTS可应用在涉及服务调用和跨数据库操作的多个领域,包括但不限于金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、手游、视频、物联网、车联网等,典型的应用场景如下:

  2.1 解决微服务化的事务问题

  目前微服务理念被广泛应用到各IT系统的设计中。共享出行作为近几年现象级应用极大的方便了大家生活。其系统大多基于微服务理念设计,被划分为众多服务,如车况服务、优惠券服务、运维服务、车锁服务、订单服务、支付服务、用户服务等。一个简单的借车业务需要调用车况服务进行检测,调用订单服务生成订单,还需要调用用户服务、车锁服务、运维服务。如果车锁服务调用失败,用户无法使用,必须要回滚订单、车况等服务。可见微服务系统中服务调用非常频繁,而且需要数据的强一致性。GTS通过与dubbo、EDAS、SpringCloud等主流RPC框架无缝集成,可以很好解决服务调用的一致性问题。

  

  2.2 解决调用第三方服务的过程中产生的事务问题

  信息系统中很多操作可能需要调用第三方服务才能完成。例如在金融领域,客户贷款通常包括授信和支用申请两个流程,由金融公司和银行的两套独立系统共同完成。典型放款业务一般要调用本地的信用核心、风控中心、额度中心3个服务完成资产评估,然后还需要调用银行系统的身份校验和支用服务才能完成最终的放款,调用需要严格一致。一旦某个服务调用失败,除回滚本地服务外还需要回滚银行系统的两个服务。通过GTS的MT模式可以保证这种场景下第三方服务调用状态的一致行。

  

  2.3 解决跨消息事务问题

  有些系统在调用服务的同时, 也会使用消息队列(MQ)。GTS可以和MQ消息队列打通,解决跨消息事务的一致性问题。一个典型的场景是在订票系统中,当用户进行订票操作后,订票系统会调用订单服务、支付服务,同时向MQ发送订票结果。GTS可以保证三个操作的一致性性,如果发送消息失败GTS可以回滚前两次服务调用。

  

  2.4解决跨数据库的事务问题

  大型分布式系统往往涉及的业务非常多,数据可能存储到多个数据库中。业务操作可能需要跨多个数据库甚至是异构数据库才能完成(如一个业务操作可能需要同时向mysql和drds两个数据库中更新数据)。GTS可以很好的解决跨库的分布式事务,保证数据的强一致行。

GTS--阿里巴巴分布式事务全新解决方案的更多相关文章

  1. 分布式事务,EventBus 解决方案:CAP【中文文档】

    前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这份中文的CAP文档,对 CAP 还不知道的同学可以先看一下这篇文章. 本文档为 CAP 文献(Wiki),本文献同 ...

  2. 分布式事务,EventBus 解决方案:CAP【中文文档】(转)

    出处:http://www.cnblogs.com/savorboard/p/cap-document.html 前言 很多同学想对CAP的机制以及用法等想有一个详细的了解,所以花了将近两周时间写了这 ...

  3. cap理论与分布式事务的解决方案

    现在很火的微服务架构所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency).可用性(Availablility)和分区容错(Partit ...

  4. [转帖]分布式事务之解决方案(XA和2PC)

    分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案 ...

  5. 【转帖】分布式事务之解决方案(XA和2PC)

    分布式事务之解决方案(XA和2PC) https://zhuanlan.zhihu.com/p/93459200 ​ 博彦信息技术有限公司 java工程师 3. 分布式事务解决方案之2PC(两阶段提交 ...

  6. 【转】分布式事务,EventBus 解决方案:CAP【中文文档】

    [转]分布式事务,EventBus 解决方案:CAP[中文文档] 最新文档地址:https://github.com/dotnetcore/CAP/wiki 前言 很多同学想对CAP的机制以及用法等想 ...

  7. 分布式事务框架&解决方案参考

    两种开源解决方案框架介绍: https://blog.csdn.net/zyndev/article/details/79604395#_97 LCN: https://www.jianshu.com ...

  8. 分布式事务之解决方案(TCC)

    4. 分布式事务解决方案之TCC 4.1. 什么是TCC事务 TCC是Try.Confirm.Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作 :预处理Try.确认Confirm.撤销C ...

  9. 分布式事务之解决方案(XA和2PC)

    3. 分布式事务解决方案之2PC(两阶段提交) 针对不同的分布式场景业界常见的解决方案有2PC.TCC.可靠消息最终一致性.最大努力通知这几种. 3.1. 什么是2PC 2PC即两阶段提交协议,是将整 ...

随机推荐

  1. Django在生产环境中的部署

    基本思路 1.方案:Nginx+uwsgi 这样大体的流程是:nginx作为服务器最前端,负责接收client的所有请求,统一管理.静态请求由Nginx自己处理.非静态请求通过uwsgi传递给Djan ...

  2. SSH secure shell 原理与运用

    转: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 作者: 阮一峰 日期: 2011年12月21日 SSH是每一台Linux ...

  3. Oracle 修改trace 文件路径

    修改trace 文件路径命令 适用于oracle 11G以后的版本 在集群环境中的2个节点都生效SQL> ALTER SYSTEM SET diagnostic_dest='/tmp' SCOP ...

  4. Xcode控制台命令

    命令 解释 break NUM 在指定的行上设置断点 bt 显示所有的调用栈帧,该命令可用来显示函数的调用顺序 clear 删除设置在特定源文件.特定行上的断点,其用法为:clear FILENAME ...

  5. Django-session中间件源码简单分析

    Django-session中间件源码简单分析 settings里有关中间件的配置 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddlew ...

  6. Winter-1-F Number Sequence 解题报告及测试数据

    Time Limit:1000MS     Memory Limit:32768KB Description ​A number sequence is defined as follows:f(1) ...

  7. 【PS技巧】创建2D对象的描边阴影

    在本场景中,怪物死亡掉落宝袋.所以在玩家眼里,宝袋是掉落在场景里,而不是像其他界面的UI元素,悬浮在场景上的. 所以,我们需要给宝袋添加阴影,增加它与场景之间的视觉过渡,比较简单的办法是使用阴影,正如 ...

  8. 论文笔记:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

    ICML, 2015 S. Ioffe and C. Szegedy 解决什么问题(What) 分布不一致导致训练慢:每一层的分布会受到前层的影响,当前层分布发生变化时,后层网络需要去适应这个分布,训 ...

  9. python3_json模块使用与字符编码问题

    序列化:将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是json,xml. 反序列化:就是从存储区域(json,xml)读取反序列化对象的状态,重新创建该对象 Json:一种轻 ...

  10. Ubuntu 16.04 安装Postman

    Ubuntu 16.04 安装Postman: 1.官网下载地址:https://www.getpostman.com/根据机器类型选择64位下载. 2.进入下载目录,解压该文件sudo tar -x ...