在 2017 年和 2018 年的 10 月 24 日,爱可生开源社区出品了 MySQL 分布式中间件 DBLE 和数据复制产品 DTLE。时隔一年,DBLE 和 DTLE 在社区积累了更多的设计经验和用户反馈,有更多的企业和用户在生产环境中使用它们,实现了产品的快速迭代。
目前,随着微服务架构普遍被接受,企业对如何在微服务分布式架构下,实现数据一致性要求也愈来愈高;TXLE 基于 Saga 模式,实现了分布式架构下的全局事务框架,为数据提供最终一致性;同时贴合金融业务场景设计了服务降级,差错平台对接等金融级功能。
这次开源 TXLE,是延续社区的开源传统,每一年一款开源产品。为丰富 MySQL 开源生态添砖加瓦,并但愿能切实解决更多企业和用户在金融场景下有关事务一致性的问题。git
XA 协议最先的分布式事务模型是由 X/Open 国际联盟提出的 X/Open Distributed Transaction Processing(DTP)模型,简称 XA 协议。
基于 XA 协议实现的分布式事务对业务侵入很小。它最大的优点就是对使用方透明,用户能够像使用本地事务同样使用基于 XA 协议的分布式事务。XA 协议可以严格保障事务 ACID 特性。
严格保障事务 ACID 特性是一把双刃剑。事务执行在过程当中须要将所需资源所有锁定,它更加适用于执行时间肯定的短事务。对于长事务来讲,整个事务进行期间对数据的独占,将致使对热点数据依赖的业务系统并发性能衰退明显。所以,在高并发的性能至上场景中,基于 XA 协议两阶段提交类型的分布式事务并非最佳选择。github
若是将实现了 ACID 的事务要素的事务称为刚性事务的话,那么基于 BASE 事务要素的事务则称为柔性事务。BASE 是基本可用、柔性状态和最终一致性这 3 个要素的缩写。
在 ACID 事务中对一致性和隔离性的要求很高,在事务执行过程当中,必须将全部的资源占用。柔性事务的理念则是经过业务逻辑将互斥锁操做从资源层面上移至业务层面。经过放宽对强一致性和隔离性的要求,只要求当整个事务最终结束的时候,数据是一致的。而在事务执行期间,任何读取操做获得的数据都有可能被改变。这种弱一致性的设计能够用来换取系统吞吐量的提高。Saga 就是一种柔性事务实现模式。数据库
(本文中,两阶段提交 和 柔性事务 段落部分引用文章连接: https://www.infoq.cn/article/...)
TXLE是一款基于 Saga 模式的开源分布式事务框架,主要解决分布式架构下的数据最终一致性。架构
目前支持整合主流框架 SpringCloud、Dubbo 等;同时提供链路追踪、消息中心、数据转储和监控平台等相关组件,以便保证 txle 服务可以更好地对外提供服务。另外还提供服务降级功能,差错平台等金融级属性,以便在框架遇到严重故障时,还能保证主业务的正常运行。并发
https://github.com/actiontech...app
https://github.com/actiontech...框架
TXLE 官方 QQ 社区交流群:696990638分布式