GTS为分布式事务

产品简介

GTS是行业内的第一款也是惟一的一款,专一于解决分布式事务问题的中间件。GTS被定义为一站式的分布式事务解决方案,立足点是解决全部的事务问题。应用开发中遇到的事务问题大体分为四个方面:跨库事务、服务化事务、消息事务、混合事务。mysql

GTS与其余解决方案对比

在GTS出现以前,事务问题的解决方案主要有XA方案,补偿方案,消息方案等。
·XA方案:优势为接口标准化。缺点是阻塞协议,影响系统吞吐和可伸缩性,性能不理想,很难知足互联网大并发需求,缺少容错机制。
·补偿方案:优势为符合业务需求。缺点是实现复杂,各类异常状况难于处理,要求每一个方法实现一个反向的回滚接口,运维成本高,扩现移植性不理想。
·消息方案:优势为实现相对简单。缺点是要求应用与消息系统紧耦合,增长开发成本,要求业务实现幂等。最终一致性,适用场景受限.sql

XA方案是在资源层面解决分布式事务的问题。补偿方案和消息方案是在应用层面解决事务问题。GTS既不在资源层面也不在应用层面,而是在中间件的层面解决事务问题。这是GTS和其余三个方案的本质不一样点。在中间件层面解决有几个优点:第一,能够解决跨资源的事务问题,这个是XA方案很难作到的。若是业务系统须要访问多个资源,好比多个mysql数据库同时须要访问MYSQL以及HBASE,这个过程产生的事务问题,GTS能够解决。第二,能够解决服务化的事务问题,并且和应用是松耦合的,经过使用GTS微服务不须要嵌入解决事务的逻辑,微服务会更加简单、轻量化。第三,GTS对应用的侵入性很是低,便于应用的扩展和移植。数据库

GTS优点

GTS的优点总结起来包括四个方面:
·完整解决方案。能够解决分布式数据库、跨数据库、服务化、消息系统场景下的分布式事务问题。
·侵入性极低。一行注解便可实现事务接入,也提供 API 接入模式使用门槛低,节省开发和运维成本。
·性能超强。高达传统分布式事务 10 倍性能,4c8g集群可达1.5万TPS。热点数据高效处理,无惧数据冲突。
·高可用。支持应用宕机、节点故障等各种异常状况下都可保持数据严格一致,支持同城主备及两地三中心部署。架构

产品历史

GTS于2014年正式立项,由阿里高级技术专家于皋牵头研发,所谓5年磨一剑。到2015年12月份在阿里内部各业务线大规模应用。2017年2月份在阿里云公测。目前GTS拥有16项核心专利,其中包括4项国际专利。阿里巴巴的用户如今主要有三类:专有云用户、公有云用户、阿里内部用户。
GTS于5月21日正式商用,首发1月内购买,低至七折。GTS 实例规格分为 5 TPS(免费版)、20 TPS、100 TPS、200 TPS、500 TPS、2000 TPS 和 5000 TPS。并发

功能架构

整体架构

上图为整体架构图,左侧为GTS服务端,为三个节点的组成的集群;右侧为客户端。app

GTS事务模型

GTS的全局事务是由若干个分支事务构成的。框架

GTS的客户端包含两部分:GTS Client和RM。在全局事务开始时,GTS Client会链接服务端,服务端会返回xid给Client;Client端将xid传输给涉及到全局事务的全部RM;以后,全局事务中的每个RM须要开启一个分支事务,RM须要向服务端获取一个分支事务的ID号;以后,RM会汇报状态给服务端,服务端会知道每个分支事务的执行状况,而后根据状况返回给Client端,以完成数据提交工做。运维

GTS与微服务集成架构

GTS与微服务框架集成的架构如上图所示。业务应用在调用微服务时首先会经过GTS Server发起一个全局事务,获取到全局事务ID后。业务应用进行服务调用,同时会将全局事务ID,也就是xid传输到每一个服务端。业务应用在调用a、b以后若是调用微服务c的时候出现了异常,这个时候业务应用会通知服务端,由服务端驱动微服务的RM进行服务的回滚。这个回滚对服务是透明的。分布式

容错机制

GTS容许服务端出现宕机状况,它能够保证这种状况下事务的一致性。若是应用是多机部署的,在应用节点宕机的状况下GTS仍然能够保证数据的一致性。
·服务节点宕机微服务

如上图所示,在回滚的过程当中,S3出现宕机状况以后,App1链接不上S3。此时,S1里面有S3的备用信息,那么App1会自动链接S1,由S1协助完成App1刚刚没有完成的回滚的工做。
·应用节点宕机

如上图所示,App2是客户端发起了回滚操做,若是回滚的过程当中app1所在的节点宕机,这个时候,GTS服务端会驱动其余app1的RM完成回滚。

扩展机制

GTS支持横向扩展。由上图能够看出,一个逻辑组能够映射不一样的物理组,并且不一样的逻辑组能够映射到同一个物理组。

在应用节点很是多的状况下,能够经过不一样的逻辑组去映射不一样的物理结点,以达到横向扩展的效果。

AT&MT

GTS提供AT模式(自动模式)和MT(手动)两种模式。AT模式能够覆盖90%以上的场景,也是咱们首先推荐使用的模式。能够自动回滚、对业务无侵入。MT模式是GTS对TCC的一种支持,主要适用于多个系统集成的场景。两种模式能够组合使用。

应用场景

解决跨数据库的事务问题

数据库能够是同构数据库,异构数据库,关系数据库,非关系数据库等。GTS能够保证多种状况下的事务一致性。

解决微服务调用的事务问题

微服务常常会遇到各类事务问题,GTS很是适合解决这样的问题。好比应用嵌套调用微服务等,GTS均可以保证事务的一致性。

解决多系统集成的事务问题

上图为用户的案例。放款应用调用金融系统中的信用核心的服务去完成系统评估,调用风控中心服务为客户作风险评估,调用额度中心生成放款额度,最后调用银行的支用服务和合法校验服务,完成放款的操做。

解决混合事务问题

当应用调用多个服务时,GTS也能够解决这样的混合事务问题。

实践操做

AT模式

上图所示例子为转帐操做。

如上图所示,配置文件里须要加两个东西,第一个是GTS提供的一个数据源,第二个是须要加TxcTransactionScaner

MT模式

MT模式是调用第三方接口,或者是在不一样系统集成的时候可能用到的一种模式。 在不一样的阶段,GTS会调用不一样的方法,当方法调用失败的时候GTS会有必定的策略去处理,保证方法的正确实行。

相关文章
相关标签/搜索