现代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. (0.2.6)Mysql安装——编译安装

    (0.2.6)Mysql安装——编译安装 待完善

  2. linux rhel unix centos FreeBSD 常用命令

    一:使用CentOS常用命令查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /pr ...

  3. JavaWeb—基于Token的身份验证

    传统身份验证的方法 HTTP Basic Auth HTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RES ...

  4. jmeter 请求发送加密参数(加密接口测试一)

    最近在做http加密接口,请求头的uid参数及body的请求json参数都经过加密再发送请求,加密方式为:ase256.所以,jmeter发送请求前也需要对uid及json参数进行加密.我这里是让开发 ...

  5. Python(线程进程2)

    新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的: 1. 在UNIX中该系统调用是:fork,fork会创建一个与父进程一模一样的副本,二者有相同的存储映像.同样的环境字符 ...

  6. TWebBrowser静音

    procedure TForm1.FormCreate(Sender: TObject); var   hDSound: Cardinal;   pDirectSoundCreate: Pointer ...

  7. XDU 1011

    解法1:TLE #include<stdio.h> int main() { long long n; //freopen("in.txt","r" ...

  8. spark-streaming读kafka数据到hive遇到的问题

    在项目中使用spark-stream读取kafka数据源的数据,然后转成dataframe,再后通过sql方式来进行处理,然后放到hive表中, 遇到问题如下,hive-metastor在没有做高可用 ...

  9. Java枚举类型定义方式

    public enum Method { // get请求 GET("get"), // post请求 POST("post"); private String ...

  10. $聊一聊"驼峰"和"下划线"——Python re.sub函数详细用法实例讲解

    日常写代码时候会遇到一些字符串替换的操作,比如把一大堆"驼峰"形式的字符串批量转换成下划线形式."驼峰"形式的变量命名风格在Java中很常见,而下划线形式的变量 ...