天天看点

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

分布式系统架构中,分布式事务是一个绕不过去的挑战。什么是分布式事务?简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库或消息系统的数据一致性。

分布式事务是一个世界性技术难题,最难之处在于严格保证数据一致性的情况下很难达到高性能。xa模型的两个代表产品是oracle的tuxedo和ibm的cics,这两个产品都有很长的历史和很高的声望,但在国内没有多少用户,根本原因是什么?价格是一个因素,但不可能是关键因素,任何人都会做“价格”与“量”的取舍,何况是精明的oracle、ibm。根本原因在于性能。相同软硬件,开启分布式事务则吞吐大幅下降,用户是很难接受的,会转而使用一些最终一致性方案,或放弃事务,通过每天对账进行人工订正。

gts产品的内部名称是txc,从14年5月份开始研发。产品最初目的是解决阿里内部广泛使用的tddl分库分表所带来的分库间数据不一致问题,和hsf服务化后所带来的服务链路上数据不一致问题。这是典型的分布式事务要求。

gts支持的资源包括:drds,oracle,mysql,rds,pgsql,h2,mq。后续计划根据实际业务需求支持更多类型资源。gts事务可以通过rpc框架和消息中间件进行事务传递,把整个业务调用链路或者消息链路串在一个分布式事务,极大简化应用开发。

gts支持同城容灾与两地三中心容灾,可以保证各种异常情况下的数据一致。gts简单易用,对业务无侵入,真正做到业务与事务分离,开发者可以集中精力于业务本身,使用分布式事务时,通过简单加个注解即可完成,如下例所示可以保证两个数据库上的操作在同一个事务:

    @txctransaction(timeout = 60000)

    void dataupdate(connection con1,

connection con2) {

        update1(con1);

        update2(con2);

    }