阿里中间件(Aliware)双十一专题——“分布式事务中间件GTS(TXC)”

一、 前言

什么是事务?大家最熟悉的莫过于数据库事务,一大堆SQL操作一个DB,要么同时成功、要么同时失败。(GTS支持ACID,特此公告,不再解释)
什么是分布式事务?一大堆SQL操作N个DB,或者一大堆服务操作1个或多个DB,要么同时成功、要么同时失败。
怎么保证事务?有一个解决办法是“两阶段提交”,一阶段大家先把该做的做了但是不提交,二阶段再一起提交或都不提交。
单机事务到分布式事务的变化?在分布式环境下,所有的状态同步都需要走网络,成本变得非常高。因此做好分布式事务容易,难点在于怎样做的又快又好。
现状?分布式事务是性能杀手,千万不要使用,可以异步做最终一致,既保证性能又保证功能,完美!我们是程序员,不怕实现幂等、不怕实现补偿、不怕逻辑复杂、不怕工作量、不怕人肉、不怕加班。。。
楼主想说:niubility!然而事实的真相是,过度使用事务造成的性能下降的恶果,应该由应用的开发者承担;应用开发者在使用事务的时候,必须考虑到性能问题。然而,作为中间件,必须提供事务机制,而不是因为性能问题,就干脆不提供事务。我们有义务把通用的问题从复杂业务中抽丝剥茧,做成稳定的工具,避免重复造轮子。更何况,我们只是牺牲了那么一丢丢性能,换来的是不用加班、不用承担故障风险、可以更好的关注业务本身。

二、 GTS来了

进入正题,什么是GTS?GTS是一款高性能、高可靠、接入简单的分布式事务中间件,用于解决分布式环境下的事务一致性问题。该产品支持 DRDS(TDDL)、RDS、Oracle、MySQL、PostgreSQL、H2 等多种数据源,并可以配合使用 EDAS(HSF)、Dubbo 及多种私有 RPC 框架,同时还兼容 MetaQ(MQ) 消息队列等中间件产品,能够轻松实现分布式数据库事务、多库事务、消息事务、服务链路级事务及其各种组合,策略丰富,易用性和性能兼顾。
我们专注于提供易使用、高性能、稳定、可靠的完整的分布式事务解决方案体系。

三、 双11解决了哪些问题

作为双11战场的新兵,我们承担了阿里影业、村淘、菜鸟结算等业务线,以及公有云波司登、慧银等外部用户的双11大促。
GTS承担了保证业务数据一致的责任,并且一般在业务出现异常的时候才发挥作用,把不完整的业务数据回滚到操作之前的状态。这种异常,在业务压力不大的情况下,是低概率事件,而到了双11大促这种业务流量突发的情况下,变成了频发事件。从11.11零点到10分这段时间里,后端通用服务系统均存在不同程度限流的状况,前端业务出现了大量的不完整事务。我相信,使用GTS的产品线都可以爽歪歪、早早洗洗碎了,完全不用担心那些不完整的事务怎么处理。
事实说明,菜鸟结算、阿里影业、村淘的三个业务场景,在双11的前30分钟内,业务回滚超过5%,全天平均回滚超过2%。其他业务线普遍回滚事务超过总量的1%。无一数据不一致!!!

四、 更多的应用场景

(1)解决TDDL分库分表产生的跨数据库事务

@TxcTransaction(timeout = 60 * 1000)void funcUseDrds(DataSource tddlDataSource) throws SQLException {  Connection connection = tddlDataSource.getConnection();  Statement statement = connection.createStatement();  try {    statement.execute("insert");    statement.execute("update");    statement.execute("delete");  } catch (Exception e) {    throw new TxcExecption(e);  } finally {    // clear env ...  }}

(2)解决服务化产生的操作多个服务的分布式事务

@TxcTransaction(timeout = 60 * 1000)void funcUseEdas(HsfService hsf) {  // 调用远端服务  boolean ret = hsf.runBusiness();  if(ret == false)    throw new TxcExecption;}

(3)解决异构数据源,包括TDDL、MetaQ、以及其他关系型数据库产品的分布式事务问题;

@TxcTransaction(timeout = 60 * 1000)  void distributedTransaction(    Service svc,    DataSource dataSource,    Message msg, TxcMetaQProducer producer) {        // 调用远端服务        serv.runBusiness();        // 调用DB           dataSource.executeSQL();        // 调用MQ        producer.sendMessage();       }

五、 我们的优势

完整的分布式事务解决方案;
高性能、高可靠;
九项发明专利奠定了技术壁垒;
支撑内外近50个用户,经过实际验证。

六、 未来的挑战及我们的目标

提升SQL兼容性
提升用户体验
丰富可接入资源(含nosql类、消息类、rdbms、更多服务框架)

阿里云帮助文档:https://help.aliyun.com/document_detail/43085.html?spm=5176.product29500.6.225.ePTeeW

阿里沈询:分布式事务原理与实现 2016年12月28日20:00在线直播 绝对干货等你来   立即去报名观看直播

时间: 2025-01-19 19:02:08

阿里中间件(Aliware)双十一专题——“分布式事务中间件GTS(TXC)”的相关文章

用分布式事务中间件来保障金融级交易系统的一致性

背景介绍 本篇是北京云栖大会Tech Insight Workshop金融云主题<使用SOFA来快速构建金融级分布式交易系统>中的一个组成部分. 通过前面的篇章,我们已经借助SOFA Boot框架构建了基于微服务架构的分布式交易系统框架,以及借助数据访问代理将系统的订单库由单库单表模式改造为分库分表,便于支撑平台日益增长的数据量. 在本章节中会介绍如何通过引入蚂蚁中间件的分布式事务产品来保证金融级交易系统的一致性问题,并且会分别介绍分布式事务的两种模式:TCC模式和自动模式的使用方式. DEM

破解世界性技术难题! GTS让分布式事务简单高效

近日,2017云栖大会·深圳峰会如期举行,多项阿里云新产品对外发布.在企业级互联网架构分会场,来自阿里中间件(Aliware)的技术专家及合作伙伴,为现场参会嘉宾带来最新的传统IT架构到企业级互联网架构跨越式升级.实现互联网转型的产品及解决方案.其中高级技术专家姜宇在分享中带来的Aliware新产品-全局事务服务(Global Transaction Service ,简称GTS),在分布式事务处理上带来的高性能和技术创新令到场参会的各路技术专家眼前一亮. Aliware新成员-全局事务服务GT

分布式事务云市场分析

背景 全局事务服务GTS上个月开始在阿里云上公测,之前我们也发表了一篇「破解世界性技术难题!GTS让分布式事务简单高效」的文章,引起了业界广泛关注,接受了大量的咨询,故希望通过本文让大家对GTS有更深入的理解. GTS在目前在阿里内外部已经有较大规模的应用,有100多个用户,其中专有云大用户就有10多个,预计今年将有更大规模的市场需求爆发. 用户诉求是什么 分布式事务解决的用户最本质诉求是什么?数据一致. 大中企业有一个共同的诉求是数据一致,几乎覆盖到各个行业. 比如说零售行业,库存与出货的数据

GTS for DRDS分布式事务的实现理解

GTS介绍 全局事务服务(Global Transaction Service,简称 GTS)是一款高性能.高可靠.接入简单的分布式事务中间件,用于解决分布式环境下的数据一致性问题. 一个完整的业务往往需要调用多个子业务或服务,随着业务的不断增多,涉及的服务及数据也越来越多,越来越复杂.传统的系统难以支撑,出现了应用和数据库等的分布式系统.分布式系统又带来了数据一致性的问题,从而产生了分布式事务. 分布式事务是指事务发起者.资源管理器.事务协调者及资源分别位于不同的分布式系统的不同节点之上. G

阿里沈询:分布式事务原理与实践

直播回顾视频:https://yq.aliyun.com/edu/lesson/play/508 事务简介 事务的核心是锁和并发,采用同步控制的方式保证并发的情况下性能尽可能高,且容易理解.这种方式的优势是方便理解:它的劣势是性能比较低. 计算机可以简单的理解为一个标准的打字机,尽管看起来计算机可以并行处理很多事情,但实际上每个CPU单位时间内只能做一件事,要么读取数据.要么计算数据.要么写入数据,所有的任务都可以看成这三件事的集合.计算机的这种特性引出了一个问题:当多个人去读.算.写操作时,如

MySQL分布式事务(XA事务)

MySQL分布式事务(XA事务) 官网:https://dev.mysql.com/doc/refman/5.7/en/xa.html 1.什么是分布式事务 分布式事务就是指事务的参与者.支持事务的服务器.资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上.以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败.本质上来说,分布式事务就是为了保证不同数据库的数据一致

关于分布式事务

一.普通事务与分布式事务 1.1 普通事务 普通事务就是一般所说的数据库事务,大家对数据库事务应该都很了解,这里再简单介绍下. 事务是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成.当事务被提交给了DBMS(数据库管理系统),则DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的

分布式事务及分布式系统一致性解决方案

在分布式系统中,同时满足"一致性"."可用性"和"分区容错性"三者是不可能的.分布式系统的事务一致性是一个技术难题,各种解决方案孰优孰劣? 在OLTP系统领域,我们在很多业务场景下都会面临事务一致性方面的需求,例如最经典的Bob给Smith转账的案例.传统的企业开发,系统往往是以单体应用形式存在的,也没有横跨多个数据库. 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring.JDBC.ADO.NET),结合关系型数据库自带的事务管理

Mycat 分布式事务的实现

随着并发量.数据量越来越大及业务已经细化到不能再按照业务划分,我们不得不使用分布式数据库提高系统的性能.在分布式系统中,各个节点在物理上都是相对独立的,每个节点上的数据操作都可以满足 ACID.但是,各独立节点之间无法知道其他节点事务的执行情况,如果想让多台机器中的数据保存一致,就必须保证所有节点上的数据操作要么全部执行成功,要么全部不执行,比较常规的解决方法是引入"协调者"来统一调度所有节点的执行. XA 规范 X/Open 组织(即现在的 Open Group)定义了分布式事务处理