Seata-DTX|分布式事务金融场景案例介绍

分布式事务 2.本地事务总结:数据库事务在实现时会将一次事务的所有操作全部纳入到一个不可分割的执行单元,该执行单元的所有操作要么都成功,要么都失败,只要其中任一操作执行失败,都将导致整个事务的回滚 阅读详情

c5a6cc25e3000d783cafc2ec62d9b924.gif

文|魏陈豪(花名:无陈 Sam)

蚂蚁集团 SOFAStack 产品专家

3c3640ddc48f44dc7868a394f53578b0.png

本文 2966 字 阅读 8 分钟

序言

今天给大家带来一篇 Seata-DTX[1] 商业版分布式事务在金融行业如何保证事务一致性的实践介绍。从一个全局视角出发看看一致性的保证、分别有哪些节点,事务组件在其中处在一个什么位置、担任什么工作。

分布式系统下的事务问题阐述

云原生应用以分布式系统为主,应用会被切分到多个分布式的微服务系统下。拆分一般分为水平拆分和垂直拆分,这并不仅仅单指对数据库或者缓存的拆分,主要是表达一种分而治之的思想和逻辑。

分布式系统的底层无法逃离“CAP 的不可能三角”(C: Consistency,一致性;A: Availability,可用性;P: Partition Tolerance,分区容忍性)。CAP 原理证明,任何分布式系统只可同时满足以上两点,无法三者兼顾。而分布式的服务化系统都需要满足分区容忍性,那么必须在一致性和可用性之间进行权衡。

如果网络发生异常情况,导致分布式系统中部分节点之间的网络延迟不断增大,可能会导致分布式系统出现网络分区。复制操作可能会被延后,如果这时我们的使用方等待复制完成再返回,则可能导致在有限时间内无法返回,就失去了可用性;如果使用方不等待复制完成,而在主分片写完后直接返回,则具有了可用性,但是失去了一致性。

f4c2a91f00931f896b3312561a679aee.png

图 1 CAP 理论

图片出处:https://lushunjian.github.io/blog/2018/06/20/CAP%E7%90%86%E8%AE%BA/

金融机构对一致性的诉求

对金融机构而言,架构层面的高可用和业务层面的强一致性,几乎同样重要。这就需要金融级云原生能够很好地平衡“CAP 的不可能三角”,需要尽可能兼顾业务强一致与系统高可用。

但是“一致性挑战”在分布式系统中绝不仅仅是一个数据库问题,而是一个大的话题。其涵盖分布式系统的各个层面:事务一致性、节点一致性、系统间业务一致性、消息幂等一致性、缓存一致性、跨 IDC 一致性等等。所以也需要云原生架构有一系列技术能够应对金融级对一致性的严苛挑战。

一致性控制的几个重要维度

这里挑选几个常见的金融场景下需要解决的一致性维度进行阐述。

事务级:事务级别的一致性控制需要根据不同的金融场景选择合适的分布式事务模式。在我们针对 Seata-DTX 的客户进行调研后,发现大多数客户在平衡成本和性能后,基于 SAGA 和 TCC 是目前金融机构比较常用的两种分布式事务模式。SAGA 模式对应用实现侵入性更小,但基于补偿事务来保障一致性的设计、前后步骤执行过程中不保证事务隔离性;而 TCC 模式能做到比较好的事务隔离性,但需要应用层感知更多的复杂度。

对于事务流程中部分不需要同步返回结果的节点,为提高执行效率可采用异步消息队列实现,对于一些事务流程较长的场景可明显降低事务实现复杂度、削峰填谷。典型场景如客户购买理财场景简化分为存款账户扣款和理财账户入账两个步骤,若选用 SAGA 模式,存款账户成功扣款后、理财账户入账失败,客户会看到“钱已付、货没到”的中间异常状态,需要系统进行冲正存款账户扣款来保障事务一致性。如选用 TCC 模式,先后完成存款账户扣款、理财账户入账的逻辑处理,各自需要存款系统和理财系统记录逻辑处理的状态,二者均成功后再发起统一提交。

数据库级:接下来是数据库层面,金融场景下对于数据不丢有着极致的要求:一方面需要在同城、异地多个机房保存多个副本,另一方面需要在多个副本之间实现数据同步,Seata-DTX 的高可用也是依赖数据库之间的数据同步进行保障的。整体作用是以防一个 Seata-DTX 事务集群宕机后,切换到另外一套 Seata-DTX 事务集群后,可以恢复到正在进行中的事务记录,保障同城分布式事务的 RPO 为零、异地 RPO 接近零。数据库同步中,如果使用的是分布式事务库,分布式数据库一般通过对 Paxos 的支持来实现跨多服务器,甚至跨多中心的数据一致性保证。

机房级:跨机房的路由能力、异常事务的跨机房恢复能力。发生机房故障时,数据库需要能够切到同城/异地的副本、并保障 RPO 为零,配合应用层的交易路由切换,完成机房级容灾切换、恢复业务。期间因机房故障导致的部分交易事务流程中断,分布式事务组件需要具备自动恢复能力,重新启动中断的事务流程按事先设定的业务规则向前完成或向后冲正。

真实金融客户案例

以某资产规模超过 2 万亿元的省级农信为例,来看一下在核心整体下移的过程中,如何使用事务、配合数据库,机房容灾进行一致性控制。

首先介绍一下整体的业务架构,在新核心平台中,大致可以分为产品服务层、交易中心层、交易中台层,如图 1 所示。交易中心收口所有的交易流程,对产品服务提供交易能力。最下面是交易原子能力层,主要包含 8 个中台,中台不直接对上提供服务,由交易中心统一处理。整个交易中心的能力,都基于服务编排构建,在编排流程中使用 SAGA 事务进行流程一致性控制。

9b57b8ee56fad8b6b47ae57f4e83ced6.png

图 2 分布式新核心下移平台分层架构

以贷款产品为例:整体的贷款支取、还款等长流程在信贷产品系统中,由 SAGA 事务进行串联,核心的资金交换部分由 TCC 事务把控一致性,做到对整体长流程里多个应用实现较小的侵入性。但基于补偿事务来保障一致性的设计、前后步骤执行过程中不保证事务隔离性,因此用 TCC 模式来处理对隔离性有较强诉求的核心资金交换服务,如图 3 所示。

a59eecdba221a5bbbc6c7c8941b6faac.png

图 3 核心下移智能贷款系统流程

如下图 4 是上述图 3 信贷产品中的还贷流程 TCC 流程示例。启动 TCC 事务后,使用 try 先尝试锁定客户账户余额,锁定成功后,等待二阶段提交。尝试 try 换贷款利息,锁定成功。整体提交事务,进行二阶段的扣账 confirm,以及还利息 confirm。

1fde271d763a5bf201af3346606c9f5b.png

图 4 核心下移智能贷款 TCC 流程

事务层面的一致性进行了保证后,针对客户的 2 地机房进行事务的高可用部署,如图 5 所示。

9b90c739ba88d7c360bc51128cb0d765.png

图 5 金融级云原生分布式事务部署架构

Console 是分布式事务的配置控制台,用户访问时通过 VIP 路由到不同机房的 console,数据写入到主 DB,主备 DB 数据实时同步。

Seata-DTX Server 为分布式事务异库模式下的事务控制器和事务恢复器。其主要是记录事务日志,发起二阶段调用以及异常事务的恢复任务。

业务应用用过 VIP 获取 Seata-DTX Server 对应的 IP。事务发起方发起事务时,事务日志都写入到主 DB 中,数据同步到备 DB。

当福州 IDC 宕机或者断电时,流量会全部路由到上海 IDC。备数据库中因为有主 DB 的所有事务记录,当控制台查看事务数据和发起恢复事务任务时,仍然能正常执行。(当然可能会有人问这个情况下会不会频繁出现跨机房的分布式事务影响性能,此处负载均衡会基于入口流量的单元信息,自动调拨流量到对应的机房。此处不过多进行阐述。)

综上可以看出,当前 Seata-DTX 的架构设计中,不单单是在事务层面去控制一致性。当有多个地域,多个副本时,可能需要结合数据库保证事务数据的一致。在多机房的情况下,需要依赖容灾能力,保证交易事务的流程可恢复。

[1]Seata-DTX:

https://help.aliyun.com/document_detail/132903.html?spm=a2c4g.132901.0.0.4bcb3c9b6bg9ik

Seata Star 一下 ✨

https://github.com/seata/seata

  本周推荐阅读  

862a57495ab93649d5a876acfdedb2cf.png

Seata Saga 模式快速入门和最佳实践

d031353d582b6cb04d8ef55de0c0bb17.png

生产环境可用的 Seata-go 1.2.0 来啦!!!

c6748dd0c23a8b8459b89d04e95355cc.jpeg

Seata-go 1.1.0 发布,补齐 AT 模式支持

163e2a4c2a6a414c1b898e86701b8c7f.png

Seata AT 模式代码级详解

b93740afb852f7a0d915dec44c3e592f.jpeg

【云原生技术】分布式事务处理简介 分布式事务处理是在分布式系统中维持数据一致性和完整性的一种机制。在分布式数据库或多个数据库系统间处理事务时,分布式事务确保所有相关的操作要么全部成功,要么全部失败,这符合事务的ACID(原子性、一致性、隔离性、持久性)原则。分布式事务处理是分布式数据库和微服务架构中的一个重要概念。它确保了在多个系统和数据库间处理事务时的数据一致性和完整性。虽然分布式事务提供了很多好处,但它们也带来了更复杂的实现和性能上的挑战。在设计分布式系统时,需要仔细考虑是否需要分布式事务,以及如何有效地实现它们。 阅读详情

相关推荐

避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题

本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。

weixin_42549496的博客 289

阿里dataX使用方法

1.下载源码https://github.com/alibaba/DataX 2.通过maven打包: $ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true 3.打包成功后的DataX包位于 {DataX_source_code_home}/target/datax/datax/ ,结构如下: 4.配置示例:从stream读取数据并打印到控制台 $ cd {YO

yanziyu0721730的博客 530

【军标】《军用软件计价规范(试行)》和GJB 10162-2021《军用软件计价功能项识别方法》-费用标准解读系列37

2021年2月1日实施的《军用软件计价规范(试行)》(替代了2019年版本)以及2021年3月1日实施的《军用软件计价功能项识别方法》(GJB 10162-2021),是我们平时在军用软件造价咨询中进行软件规模度量、计价和审价的主要依据。《军用软件计价规范(试行)》(4号文)的附件1为《军用软件功能规模度量方法》,即4号文本身包含对软件规模测试的方法(功能点方法主要参考NESMA等国际标准)、规模度量过程、功能点计数和计算规则等相关说明。(四)软件研发费用=软件研发工作量x软件研发人月综合费率。

xiaosenyouli的博客 6127

蚂蚁金服分布式事务框架DTX源码学习

文章目录一、前言二、DTX简介三、角色四、服务发起者与参与者DTX客户端启动流程1、项目启动,创建dtx动态代理2、初始化DtxClient客户端的init()方法五、服务发起以及参与流程 一、前言 之前因工作原因(公司购买了阿里的金融中间服务),接触一段DTX,通过反编译看了一些DTX的源码并记录一些笔记,但是并不完全,由于DTX-SERVER阿里只是提供了一个很简单的测试demo,加上时间等因...

敲代码的文科生的博客 3598

ROS2与Gazebo协同实现多机器人避障仿真

本文详细介绍了如何利用ROS2与Gazebo协同搭建多机器人避障仿真环境。通过创建SDF机器人模型、编写多机器人启动文件以及集成基础避障算法,构建了一个低成本、高效率的虚拟测试平台,为AGV编队、机器人集群等项目的算法验证与迭代提供了完整解决方案。

weixin_29065659的博客 295

论文理解【LLM-OR】——【OptiMUS】Scalable Optimization Modeling with (MI)LP Solvers and Large Language Models

OptiMUS 把“自然语言→优化建模与求解”从单次生成改造成“结构化问题 + 多智能体协作 + 连接图检索”的模块化流程,并在更长更难的数据集上验证了这种结构化方法相对端到端 prompting 的优

佚失的诗篇 824

分布式事务框架以及解决方案

全局事务涉及几个本身具有事务性的操作,但是所有操作必须作为一个组同时COMMIT或者ROLLBACK,从本质上讲,这将ACID属性扩展到上一个级别,以便可以将多个ACID事务作为具有ACID属性的全局操作的组成部分一起执行。 使用全局事务的应用程序涉及一个或多个资源管理器和一个事务管理器: 资源管理器(RM)提供对事务性资源的访问。数据库服务器是一种资源管理器。必须能够提交或回滚RM管理的事务。 事务管理器(TM)协调作为全局事务一部分的事务。它与处理每个事务的RM通信。全局事务中的单个事务是全局事务的

weixin_43875870的博客 1815

X书x-mini-sig_x-mini-mua

X书的tiny风控代码,成功运行x-mini-sig|x-mini-mua

Codeooo 博客 1万+

分布式事务之Seata原理和使用

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

shenliba的博客 963

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 962

13、无人机网络安全攻击检测:入侵检测系统综述

本文综述了无人机网络(FANETs)中的网络安全攻击与入侵检测系统(IDS)研究进展。文章介绍了无人机网络的架构设计、路由协议分类及移动模型,重点分析了DoS、DDoS、病毒蠕虫和零日攻击等常见安全威胁,并系统梳理了网络型、主机型、签名型、异常型、混合型等多种IDS的技术原理与应用。通过对比不同攻击类型及其检测机制,提出了综合使用多类IDS、更新签名库、优化路由、加强加密和建立应急响应等安全防护建议。同时展望了人工智能、量子安全和融合安全架构等未来发展趋势,旨在为提升无人机网络的安全性提供全面的技术参考。

wasm7browser的博客 162

Seata 分布式事务实践和开源详解

程序员交流社区 添加微信:372787553 备注进群 Seata 分布式事务实践和开源详解 | GIAC 实录 2019-07-02 · 绍辉 · #分布式事务 #实践 #开源 #Seata 获取本次分享完整 PPT:下载地址 本文整理自蚂蚁金服技术专家、分布式事务 Seata 发起者之一张森(花名:绍辉)在 GIAC 全球互联网架构大会的分享。详细讲解了在分布式架构演进中,蚂蚁金服面对的跨服务、跨数据库的业务数据一致性问题以及应对措施,并分享了分布式事务 Seata 的 AT、TCC、Saga 和 XA

杨海吉 604

WorkBuddy KiCad 实战:国产 AI 搭子不只会写代码,传感器板从零走到可审查

真正可用的 PCB 教程不能承诺“一键打样”。本课把 WorkBuddy 放在需求拆分、文件生成和审查记录的位置,KiCad 负责 ERC、DRC 与制造文件,工程师负责最终判断。 本课不会用“AI 一键完成”制造错觉,而是把 WorkBuddy、KiCad 8.0、Python 3.11 与人工审阅组成一条可复现链路。你会从“已确认的接口表、器件库来源、板框与电源方案”出发,得到“KiCad 工程、原理图、初始 BOM、ERC 报告与审查记录”,并学会用真实命令、错误信号和停止条件判断成果能不能进入下一阶

yueyeguzhuo的专栏 222

分布式事务框架-seata

简介 seata:Simple Extensible Autonomous Transaction Architecture 官网:http://seata.io github:https://github.com/seata/seata 2019 年 1 月,阿里巴巴中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback),和社区一起共建开...

# Never Give up & 1323

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

分布式事务之Seata简介

Seata介绍 本文以一个用户下单购买商品的系统为例,介绍开源框架Seata的原理和使用,下单该系统涉及三部分服务: 仓储服务:对给定的商品扣除仓储数量; 订单服务:根据采购需求创建订单; 帐户服务:从用户帐户中扣除余额; 分布式事务的主要作用是保证微服务情况下用户下单过程中数据的一致性。这里的一致性可以这样理解:不会出现用户余额扣除成功,但是仓储和订单相关操作失败的场景,三者要么同时成功,要么同时失败。 单机事务场景 如果用户下单购买商品涉及到的服务都在一个传统的单机服务中,三部分服务可以共享同一个数

vx539413949的博客 377

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

分布式事务(七)之Seata简介

在前面的文章中,我们介绍了分布式事务的概念以及一些解决方案。fenSeata是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA和XA事务模式,为用户打造一站式的分布式解决方案。 Seata介绍 本文以一个用户下单购买商品的系统为例,介绍开源框架Seata的原理和使用,下单该系统涉及三部分服务: 仓储服务:对给定的商品扣除仓储数量; 订单服务:根据采购需求创建订单; 帐户服务:从用户帐户中扣除余额; 分布式事务的主要作用是保证微服务情

小明的博客 1554

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

分布式事务 ( 二 ) seata 分布式事务框架

分布式事务 ( 二 ) seata 分布式事务框架

yuanchun的知识整理 901

关于seata分布式事务框架的几个问题

本文来说下关于seata分布式事务框架的几个问题 文章目录概述 概述 seata是两阶段提交事务,第一阶段解析业务sql并且生成对应快照,第二阶段是提交/回滚,并且删除快照。

wh柒八九的博客 659

2024年Java最全分布式事务之Seata原理和使用,如何强大且优雅的搞定Linux文件系统

JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录。

2301_82243232的博客 1099

更开放的分布式事务 | Fescar 品牌升级,更名为 Seata

Thanks, Fescar❤️Hello, Seata

阿里巴巴中间件 288

seata 集群_更开放的分布式事务 | 蚂蚁金服共建 Seata 社区

SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁金服自主研发的金融级分布式架构,包含了构建金融级云原生架构所需的各个组件,历经蚂蚁金服超过十年的业务历练。SOFAStack 于 2018 年 4 月宣布开源,并逐步开源 SOFABoot、SOFARPC、SOFALookout、SOFATracer、SOFAMosn、SOFAMesh ...

weixin_39933356的博客 193
上一篇: 「活动报名」 Ray Forward-下一代 AI 计算
下一篇: 议题介绍|DLRover Open Day「大模型时代的 AI 基建」
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值