金融级分布式事务框架 TXLE

Distributed Transaction Solution

在 2017 年和 2018 年的 10 月 24 日,爱可生开源社区出品了 MySQL 分布式中间件 DBLE 和数据复制产品 DTLE。时隔一年,DBLE 和 DTLE 在社区积累了更多的设计经验和用户反馈,有更多的企业和用户在生产环境中使用它们,实现了产品的快速迭代。

目前,随着微服务架构广泛被接受,企业对如何在微服务分布式架构下,实现数据一致性要求也越来越高;TXLE 基于 Saga 模式,实现了分布式架构下的全局事务框架,为数据提供最终一致性;同时贴合金融业务场景设计了服务降级,差错平台对接等金融级功能。

此次开源 TXLE,是延续社区的开源传统,每年一款开源产品。为丰富 MySQL 开源生态添砖加瓦,并希望能切实解决更多企业和用户在金融场景下有关事务一致性的问题。

常见一致性保障手段

两阶段提交

XA 协议最早的分布式事务模型是由 X/Open 国际联盟提出的 X/Open Distributed Transaction Processing(DTP)模型,简称 XA 协议。

基于 XA 协议实现的分布式事务对业务侵入很小。它最大的优势就是对使用方透明,用户可以像使用本地事务一样使用基于 XA 协议的分布式事务。XA 协议能够严格保障事务 ACID 特性。

严格保障事务 ACID 特性是一把双刃剑。事务执行在过程中需要将所需资源全部锁定,它更加适用于执行时间确定的短事务。对于长事务来说,整个事务进行期间对数据的独占,将导致对热点数据依赖的业务系统并发性能衰退明显。因此,在高并发的性能至上场景中,基于 XA 协议两阶段提交类型的分布式事务并不是最佳选择。

柔性事务

如果将实现了 ACID 的事务要素的事务称为刚性事务的话,那么基于 BASE 事务要素的事务则称为柔性事务。BASE 是基本可用、柔性状态和最终一致性这 3 个要素的缩写。

在 ACID 事务中对一致性和隔离性的要求很高,在事务执行过程中,必须将所有的资源占用。柔性事务的理念则是通过业务逻辑将互斥锁操作从资源层面上移至业务层面。通过放宽对强一致性和隔离性的要求,只要求当整个事务最终结束的时候,数据是一致的。而在事务执行期间,任何读取操作得到的数据都有可能被改变。这种弱一致性的设计可以用来换取系统吞吐量的提升。Saga 就是一种柔性事务实现模式。

本文中,两阶段提交 和 柔性事务 段落部分引用文章链接:https://www.infoq.cn/article/BAXzcfjRTcgmKisa7JHm?from=groupmessage&isappinstalled=0

TXLE 的架构

TXLE 是一款基于 Saga 模式的开源分布式事务框架,主要解决分布式架构下的数据最终一致性。

  • txle Agent:txle 在业务端的代理,主要通过对业务的拦截来生成全局事务和子事务,并将相关信息上报至 txle 服务端。
  • txle Server:txle 的服务端,主要接收 txle agent 上报的全局事务和子事务信息,并对相关信息进行管理,在发生异常时,对相应的子事务进行协调。
  • txle Server Cluster:系统引入 Consul 来保证 txle 服务端的高可用性,以及动态主从切换。
  • txle Storage:即 MySQL 数据库实例,用于存储全局事务和子事务相关日志信息、待协调信息和相关系统配置等。

目前支持整合主流框架 SpringCloud、Dubbo 等;同时提供链路追踪、消息中心、数据转储和监控平台等相关组件,以便保证txle服务能够更好地对外提供服务。另外还提供服务降级功能,差错平台等金融级属性,以便在框架遇到严重故障时,还能保证主业务的正常运行。

TXLE 的特性

  • 支持 Docker 快速部署。
  • 多种手段保证数据最终一致性。
  • 高性能。
  • 单个事务分支对业务的性能影响在 2ms 左右。
  • 低侵入。
  • 最少 2 个注解即可。
  • 支持服务降级。
  • 发生不可抗拒因素时,也能保证主业务正常运行。
  • 支持差错处理,对接差错平台。
  • 支持超时和重试机制。

项目地址

https://github.com/actiontech/txle

文档地址

https://github.com/actiontech/txle-docs-cn

QQ群

TXLE官方QQ社区交流群:696990638

分布式事务框架_1024开源首发 | 金融级分布式事务框架 TXLE相关推荐

  1. 又快又稳,金融级分布式架构如何实现?

    作者:杜茂森 在互联网和信息技术革命推动下,金融领域的"底层物质"正在发生深刻变化.以移动化.云计算.大数据.区块链等技术为主,传统金融业务与互联网技术融合,通过优化资源配置与技术 ...

  2. 国内首个,京东云金融级分布式数据库StarDB通过这项权威认证

    2021年5月18日,中国信通院分布式事务型数据库产品能力评测结果评审会圆满结束.凭借在复杂金融场景中应对生产环境极端故障突出表现,京东云StarDB恒星数据库以优异的成绩一次性通过分布式事务型数据库 ...

  3. TDSQL:腾讯金融级分布式数据库解决方案

    TDSQL:腾讯金融级分布式数据库解决方案 本博主是腾讯云的使用者与爱好者,前后分别试用了腾讯云服务器.云开发.微搭低代码开发平台,可以说算是见证腾讯的云上历程 本博文将从基础概念.TDSQL介绍.发 ...

  4. 巨杉数据库完成数亿元D轮融资,引领金融级分布式数据库发展

    金融级分布式数据库领导者巨杉数据库,于近期完成数亿元人民币D轮融资,本轮融资由中金资本领投,元禾重元与越秀产业基金跟投. 巨杉数据库是国内最早布局分布式数据库产品的公司,自2011年成立起,9年来一直 ...

  5. 助力金融业数字化转型,巨杉数据库获评金融级分布式数据库用户首选品牌

    日前,由国家工业信息安全发展研究中心指导,北京赛昇计世资讯科技有限公司主办,赛昇控股(北京)集团有限公司.产业互联网发展联盟和软件融合应用与测试验证工业和信息化部重点实验室等单位支持的"20 ...

  6. 腾讯金融级分布式数据库TDSQL的前世今生

    TDSQL(Tencent Distributed MySQL,腾讯分布式MySQL)是由腾讯技术工程事业群计费平台部针对金融联机交易场景开发的高一致性数据库集群产品.该产品第一个版本诞生于2012年 ...

  7. TDSQL是什么:腾讯如何打造一款金融级分布式数据库

    我们先初步了解TDSQL产品,以及它的适用场景. 首先,TDSQL是腾讯推出的一款兼容MySQL的自主可控.高一致性分布式数据库产品.这里我们强调一点,高度兼容MySQL--TDSQL完全兼容MySQ ...

  8. 阳振坤:当我们在谈论金融级分布式数据库的时候,其实是在说性能的代价

    我是1965年生人,在做分布式系统和数据库的研发之前,跟着老师王选,做了十多年的激光照排,亲身经历了北大方正激光照排系统从无到有,从小到大的过程,也看到了王选老师的创新对媒体出版产业.对亿万大众的信息 ...

  9. 蚂蚁金服研发的金融级分布式中间件SOFA背后的故事

    导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架 ...

最新文章

  1. centos 查看mysql 服务器配置_在CentOS上MySQL数据库服务器配置方法
  2. 活动目录的备份与还原
  3. php对称算法_php里简单的对称加密算法
  4. 如何使用jquery_好程序员web前端学习路线分享jQuery学习技巧
  5. Android启动过程五个步骤,Android启动流程、app启动原理
  6. ICCV2019 | 腾讯优图13篇论文入选,其中3篇被选为Oral
  7. 快速删除大文件 多级目录 同步并删除 rsync
  8. Win10之广告弹窗终结器:Process Explorer
  9. 生成和解析二维码(zxing)
  10. Linux清理cache
  11. 第 7 章 Neutron - 072 - 详解 ML2 Core Plugin(II)
  12. python mysql扩展,python-sql-faker:轻量级、易拓展的数据库智能填充开源库(Python实现版)...
  13. 计算机主机中的硬件组成部分,电脑的硬件组成部分及其作用各是什么
  14. JAVA扫码点餐(2)-项目过程
  15. 共享店铺系统如何设计?具体如何做?
  16. java实现APP版本比对工具类
  17. 【process on】 怎么绘制直线
  18. python在txt文件末尾追加写入_在Python文件末尾添加什么?
  19. SpringCloud从入门到精通教程/SpringCloud Alibaba从入门到精通教程
  20. 2017-7-19 《摔跤把!爸爸》

热门文章

  1. Web安全之Aspx安全分析总结
  2. 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-934 序列
  3. 阿里云总裁胡晓明:为世界带去中国云计算大数据服务
  4. 深耕Java多线程 - 死锁、活锁、饥饿
  5. Python--吊死鬼游戏
  6. OpenGL编译着色器
  7. Power Pivot随笔-DAX函数用法
  8. C++primer plus部分解答
  9. C#:int.TryParse()与int.Parse()的使用
  10. python将集合变成字符串_python中如何把list变成字符串