核心金融场景分布式事务

简介:

分布式事务是分布式系统架构设计中的一个技术难点,特别是在这几年越来越火的微服务架构中,服务拆分所带来的跨服务数据一致性问题亟待解决,本文将围绕分布式事务产生背景和蚂蚁金服的分布式事务解决方案(SOFA-DTX)向大家进行介绍。

1、分布式事务产生的背景

1.1、数据库的水平拆分

通常业务系统的数据库起初是单库,但随着业务数据规模的膨胀,单库存储受容量和性能限制,逐渐无法满足业务需求。

如下图所示,将业务数据库水平拆分成多个数据库,是业务发展的必然趋势。

100205307bfc106b2b2c01d45f0552fa88aad6bc

数据库拆分之后,写操作一旦跨多个数据库,单数据库事务就无法保证数据一致性,需要通过分布式事务来保障跨数据库操作的数据一致性。

1.2、业务服务化拆分

在业务发展初期,“大饼一沱”的单业务系统架构,能满足基本的业务需求;但是随着业务的快速发展,系统的访问量和业务复杂程度都在快速增长,单系统架构逐渐成为业务发展瓶颈,解决业务系统的高耦合、可伸缩问题的需求越来越强烈。

如下图所示,按照面向服务(SOA)的架构的设计原则,将单业务系统拆分成多个业务系统,能降低各系统之间的耦合度,使不同的业务系统专注于自身业务,更有利于业务的发展和系统容量的伸缩。

b1c3a4c53e8ecdc5a4908fbd70375f5086b33adc

业务系统按照服务拆分之后,一个完整的业务往往需要调用多个服务,如何保证多个服务间的数据一致性成为一个难题,需要通过分布式事务来保障多个服务的数据一致性。

2、蚂蚁金服的分布式事务解决方案

蚂蚁金服的分布式事务解决方案(SOFA-DTX), 是蚂蚁金服自主研发的分布式事务中间件,用来保障在大规模分布式环境下业务活动的最终一致性。

2.1、DTX整体架构

DTX以BASE理论的最终一致性为基础,以两阶段提交(2PC)为基本执行框架,整体架构上分为3个部分:客户端、资源管理器、事务管理器:

  • 客户端

通过事务管理器开启、结束分布式事务,通过资源管理器编排分布式事务活动。

  • 资源管理器

负责具体资源的准备、提交和回滚操作,并在整个执行过程中记录事务日志,向事务管理器汇报事务日志和资源执行状态。

  • 事务协调器

负责协调分布式事务的执行:开启分布式事务、记录资源管理器提交的事务日志和资源状态、决定分布式事务最终是提交还是回滚。


DTX按照阶两段提交的方式执行分布式事务,在第一阶段,客户端首先通知事务管理器开启分布式事务;分布式事务开启之后,客户端在分布式事务内编排事务内的资源,依次执行各个资源的一阶段准备操作,每一个资源的准备操作执行情况资源管理器都会向事务管理器汇报;资源编排结束之后,客户端会通知事务管理器分布式事务一阶段结束:

0ee9220d73fadf0c29179c41ee8b28cb06a546e8

在第二阶段,事务管理器会根据事务所有资源的一阶段执行情况,决定整个分布式事务最终是提交还是回滚,进而驱动所有资源二阶段的提交/回滚操作:

dfb656f764dfcb7e8f301d2a16dac7b74a27f196


根据资源管理器类型的不同,DTX分为TCC模式、FMT模式和XA模式;

2.2、TCC模式

DTX的TCC(Try-Confirm-Cancel)模式下,分布式事务的资源是TCC服务,TCC服务需要用户编码实现。

5de7eea14517fab3cbaab7dcf46f170c208842cf

如上图所示,DTX事务管理器分两阶段协调所有TCC资源,在一阶段调用所有TCC服务的prepare方法,如果所有资源均prepare成功,那么在第二阶段事务管理器会调用所有TCC资源的commit方法;如果在第一阶段任一资源prepare失败,那么在第二阶段事务管理器会调用所有资源的rollback方法;最终所有TCC资源要么全部提交,要么全部回滚。

蚂蚁金服大部分业务系统的分布式事务方案均采用TCC模式,由业务层实现两阶段的TCC服务,以确保业务数据一致性和性能达到最佳平衡;

2.3、FMT模式

TCC服务的实现及其约束条件都需要业务方提供,这无疑增加了DTX的接入门槛,所以我们在TCC模式之后继续往前推进发展,提出了FMT(Framework-managed transactions)模式来解决接入便捷性的问题。

如下图所示,FMT模式与TCC模式相同的是事务协调者也是分两阶段协调FMT资源,不同的是FMT的资源管理器;在FMT资源管理器中,用户的业务SQL作为资源的一阶段,DTX框架会自动为该业务SQL生成二阶段的提交和回滚操作。

7dfe5d0e83511025d7f6a6f14dd82f982e1540fd

FMT模式下,用户只需关注自身的业务SQL,DTX对业务逻辑的实现无任何侵入,用户接入更加方便快捷。

2.4、XA模式

DTX的TCC模式和FMT模式,基本解决了分布式事务的最终一致性问题,但是不能很好的支持实时一致性;为了解决分布式事务的实时一致性问题,DTX基于标准XA协议推出XA模式。

XA模式下,事务管理器通过数据库的标准XA接口,分两阶段协调所有的数据库资源,在一阶段调用所有XA事务的xa_prepare接口,在第二阶段执行所有XA事务的xa_commit/xa_rollback,最终完成分布式事务的执行。

f3bd42df9a287fa282ccb8d72e7969f20035357a

XA模式借助数据库的XA协议协调数据库资源,借助数据库的MVCC特性达到一致性读写,实现了一致性读写的分布式解决方案。

3、总结

SOFA-DTX在10年的发展历程中,伴随着支付宝业务的飞速发展、架构的快速演进和业务量的井喷式增长,不断帮用户解决复杂场景的一致性问题,提供了高性能、高可用性的分布式事务解决方案;DTX自身演进的三种模式:TCC、FMT和XA相互之间也是功能互补,相辅相成,形成了蚂蚁金服完善的分布式事务解决方案。

分布式事务SOFA-DTX全面覆盖金融场景,金融级容灾保障、提供丰富的接入模式并且使用简洁易于接入;目前已经应用在支付宝、网上银行、蚂蚁财富、芝麻信用、南京银行等项目中。

目录
相关文章
|
7月前
|
消息中间件 数据库 RocketMQ
分布式事务常见解决方案
分布式事务常见解决方案
331 0
|
29天前
|
存储 Java 应用服务中间件
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
【分布式技术专题】「架构实践于案例分析」盘点互联网应用服务中常用分布式事务(刚性事务和柔性事务)的原理和方案
52 0
|
8月前
|
数据库连接 数据库
分布式事务及解决方案
简单了解下什么是事务?用户定义的一系列数据库操作,这些操作可以视为一个完整的逻辑处理单元,要么全部执行,要么全部不执行。为保障事务是正确可靠的,事务具备4个特性:
72 0
|
5月前
|
Dubbo 中间件 应用服务中间件
Seata:打造行业首个分布式事务产品
Seata:打造行业首个分布式事务产品
|
8月前
|
存储 缓存 中间件
分布式事务中的解决方案,你都会了吗(一)
分布式事务中的解决方案,你都会了吗
|
9月前
|
消息中间件 Java 关系型数据库
分布式事务几种解决方案
本文小马参考部分文章,对分布式事务自己做了一下消化和总结整理。
227 1
分布式事务几种解决方案
|
9月前
|
消息中间件 运维 Java
|
SQL 存储 安全
用 Seata 搞定分布式事务的规范化建设-赋能产研|提质增效
从技术架构管理的角度看,一套规范的、通用的、可靠的分布式事务解决方案,帮助开发者在分布式环境下,既保证业务数据的一致性,又不需要投入太多的资源用于业务数据一致性的开发维护,还能加快迭代速度保障项目交付。
37579 2
用 Seata 搞定分布式事务的规范化建设-赋能产研|提质增效
|
消息中间件 SQL 关系型数据库
七种分布式事务的解决方案,一次讲给你听!
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器 「分别位于不同的分布式系统的不同节点之上」 。
七种分布式事务的解决方案,一次讲给你听!
|
存储 运维 中间件
传统金融企业如何做微服务?(3)
传统金融企业如何做微服务?(3)
传统金融企业如何做微服务?(3)