北京云栖大会Tech Insight Workshop:《用分布式事务中间件来保障金融级交易系统的一致性》篇

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
简介: 在本章节中会介绍如何通过引入蚂蚁中间件的分布式事务产品来保证金融级交易系统的一致性问题,并且会分别介绍分布式事务的两种模式:TCC模式和自动模式的使用方式。

背景介绍

本篇是北京云栖大会Tech Insight Workshop金融云主题《使用SOFA来快速构建金融级分布式交易系统》中的一个组成部分.

通过前面的篇章,我们已经借助SOFA Boot框架构建了基于微服务架构的分布式交易系统框架,以及借助数据访问代理将系统的订单库由单库单表模式改造为分库分表,便于支撑平台日益增长的数据量。

在本章节中会介绍如何通过引入蚂蚁中间件的分布式事务产品来保证金融级交易系统的一致性问题,并且会分别介绍分布式事务的两种模式:TCC模式和自动模式的使用方式。

DEMO整体架构与说明

image

实验涉及SOFA产品

环境准备

  • 通过之前步骤的操作,目前分布式交易系统DEMO已经具备了交易与支付两个微服务
  • 在这里我们依然需要基于SOFA Boot框架构建一个Core工程(facade范式):【账务】服务,该服务将用于处理消费者和商家之前的转账操作。(具体实现代码会在审核后放出)
  • 基于事务的视角,【支付】服务发起转账(事务)请求,【账户】服务处理实际的转账(事务)操作,那么【支付】服务在这里被视为事务的发起者,而【账户】服务被视为事务的参与者。
  • 分布式事务被简称为DTX(Distribution Transaction)

详细步骤

基于TCC模式的代码改造

  • 为【参与者】代码工程增加分布式事务的依赖包
    image

image
image

  • 基于facade范式构建的工程,在service模块XML文件中配置分布式事务扫描器
    image
  • 在facade中设计并参与者的从属业务(AccountTransMinus & AccountTransAdd)需要提供的TCC接口
    image
  • 在service中实现参与者的从属业务接口
    image
  • 实现了接口后就可以提供RPC服务进行发布了(生产者)
    image
  • 将会基于共享版中间件进行发布,配置相关云上共享版的账户,截止当前步骤TCC模式下的参与者代码修改已经完成
    image
  • 为【发起方】(【支付】服务)代码工程增加分布式事务的依赖包
    image

image

  • 为【支付】服务引入【账务】服务的RPC调用的依赖,以及引入对应的bean
    image

image
image

  • 模块XML文件中引入DTX扫描器
    image
  • 改造【支付】服务,开启分布式事务,调用【账务】服务的两个从属业务接口
    image
  • 至此,基于TCC模式下的分布式事务改造就完成了(当然,需要配置对应的账务数据库,相关的DDL语句与DAL代码请在DEMO源码开放出后进行参照)。

基于自动模式的代码改造

可以看到,基于TCC的分布式事务改造虽然并不复杂,但是毕竟需要对已有的业务实现进行改造。自动模式的诞生就是为了解决这个问题,它的出现很大程度上可以通过不修改已有的业务代码就可以实现事务一致性的保障。

  • 为【参与者】工程引入分布式事务的依赖包
    image

image
image

  • 配置分布式事务的扫描器
    image
  • 通过原始业务代码中增加注解,来表示这里的业务逻辑包含事务,需要保障一致性
    image
  • 修改数据源配置
    image
  • 因为自动模式需要在参与者所使用的数据源中记录事务信息,所以需要手动在对应的业务数据库中创建两张表
CREATE TABLE `dtx_row_lock` (
  `action_id` varchar(128) NOT NULL COMMENT '分支事务号',
  `tx_id` varchar(128) NOT NULL COMMENT '主事务号',
  `table_name` varchar(64) DEFAULT NULL COMMENT '表名称',
  `row_key` varchar(512) NOT NULL COMMENT '行唯一key',
  `instance_id` varchar(32) NOT NULL COMMENT '实例id',
  `context` varchar(2000) DEFAULT NULL COMMENT '分支上下文',
  `feature` varchar(2000) DEFAULT NULL COMMENT '扩展属性',
  `gmt_create` datetime NOT NULL COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`row_key`,`instance_id`),
  KEY `idx_txid_action_id` (`action_id`,`tx_id`,`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='行锁';
CREATE TABLE `dtx_branch_info` (
  `action_id` varchar(128) NOT NULL COMMENT '分支事务号',
  `tx_id` varchar(128) NOT NULL COMMENT '主事务号',
  `status` varchar(4) DEFAULT NULL COMMENT '事务状态',
  `log_info` blob COMMENT 'undo/redo log',
  `biz_type` varchar(32) DEFAULT NULL COMMENT '发起方业务类型',
  `instance_id` varchar(32) DEFAULT NULL COMMENT '实例id',
  `context` varchar(2000) DEFAULT NULL COMMENT '分支上下文',
  `feature` varchar(2000) DEFAULT NULL COMMENT '扩展属性',
  `gmt_create` datetime NOT NULL COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`action_id`),
  KEY `idx_txid_action_id` (`action_id`,`tx_id`,`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分支记录日志';
  • 至此,自动模式下参与者的修改就完成了
  • 进行对发起方的修改,首先是添加依赖包
    image

image
image
image

  • 增加分布式事务的扫描器
    image
  • 增加注释,以表明这里包含事务
    image
  • 修改数据源
    image
  • 至此,基于自动模式的【发起方】的代码改造也已完成。相关的DEMO源码需要在审核后对外进行发布。

结论

至此,基于SOFA这个可扩展的分布式云平台所构建的金融交易系统就创建完毕了,整个DEMO分别涉及到分布式数据库,微服务框架,分布式事务等构建金融相关应用所需的基本服务框架,整体的构建过程也比较清晰明了,便于用户的快速入手。在最后环节的分布式事务演示中可以看到,基于自动模式的分布式事务对业务的改造量非常的小,基本可以说是没有侵入性,非常适合需要低成本快速接入分布式事务来保证业务的一致性,同时对TPS以及并发要求不高的业务场景使用。

目录
相关文章
|
2月前
|
人工智能 Linux 云栖大会
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
报名倒计时2天啦,欢迎大家来“操作系统技术Workshop”打卡。专家讲解原理、现场实战演练,AI、C++ 20专场任选。
看过来!2024 云栖大会操作系统技术 Workshop 怎么玩?
|
供应链 Cloud Native 安全
|
Cloud Native 安全 Linux
议程剧透!1个主论坛4场Workshop,龙蜥操作系统峰会盛大来袭 | 2022 云栖大会
每场 Workshop 开放 30 个报名名额,人人一份龙蜥伴手礼!先报先审!
议程剧透!1个主论坛4场Workshop,龙蜥操作系统峰会盛大来袭 | 2022 云栖大会
|
移动开发 运维 监控
|
云栖大会 人工智能 机器学习/深度学习
承包云栖大会金融智能分论坛,9.27请你来
9月25-27日,2019杭州云栖大会即将拉开大幕。作为全球最具影响力的科技展会之一,今年,蚂蚁金服将携众多硬核黑科技亮相,首次完整介绍金融级云原生理念、共享智能、融合计算、安全计算、图计算等前沿技术及应用实践。
1749 0
承包云栖大会金融智能分论坛,9.27请你来
|
云栖大会 安全 区块链
2019年云栖大会 蚂蚁金服深耕金融15年正落地生花
9月25日-27日,2019云栖大会将在杭州上演,面向未来20年展示基础科学、创新性技术和应用的重大突破。届时,蚂蚁金服将携多项硬核黑科技亮相数字金融技术和金融智能分论坛等多个技术论坛,首次完整介绍金融级云原生理念、共享智能、融合计算、安全计算、图计算等前沿技术及应用实践。
1258 0
2019年云栖大会 蚂蚁金服深耕金融15年正落地生花
|
11天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
1月前
|
存储 弹性计算 人工智能
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
阿里云弹性计算产品线、存储产品线产品负责人Alex Chen(陈起鲲)及团队内多位专家,和中国电子技术标准化研究院云计算标准负责人陈行、北京望石智慧科技有限公司首席架构师王晓满两位嘉宾,一同带来了题为《通用计算新品发布与行业实践》的专场Session。本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第 9 代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
|
29天前
|
存储 弹性计算 安全
阿里云弹性计算_通用计算专场精华概览 | 2024云栖大会回顾
本次专场内容包括阿里云弹性计算全新发布的产品家族、阿里云第9代 ECS 企业级实例、CIPU 2.0技术解读、E-HPC+超算融合、倚天云原生算力解析等内容,并发布了国内首个云超算国家标准。