带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(2)

简介: 带你读《企业级云原生白皮书项目实战》——6.3.3 RocketMQ 事务消息的金融应用场景(2)

《企业级云原生白皮书项目实战》——第六章 云原生最佳实践——6.3 基于 RocketMQ 的基金数字化陪伴体系的架构实践——6.3.3 RocketMQ 事务消息的金融应用场景(1): https://developer.aliyun.com/article/1227798?groupCode=supportservice


6.3.3.3 分布式事务方案对比


在博时基金的业务场景下,需要解决的问题是事务一致性与服务解耦度之间的矛盾,因此我们的目标是让主从事务解耦,保证核心逻辑稳定,同时不因为解耦而牺牲最终一致性。因此,当时做出了几种不同的解决方案:

第一种方案:最常见普通消息+异步对账,这个方案的问题是无法保证主事务的执行和入队同时成功,需要时效性低的对账补偿解决,一致性只是较高。

第二种方案:本地消息表,对比上一种做法,它由业务将写入消息表放到主事务中,把主事务和入队变成一个原子操作,然后业务读取入队记录,自己投递给从事务。它的缺点是主事务和 消息表在存储上是耦合的,没有解耦度。

第三种方案:引入 XA 事务,是个两阶段提交的协议,实现难度较大。而且面临两个问题:一是这是一种同步阻塞协议,有锁占用导致并发不会太高,另外就是XA事务过程中,在参与者投赞成票后,如果协调者发生故障,节点不清楚应该提交还是中止,只能等待协调者恢复。这时候可能会出现业务中断。

第四种方案:TCC,专门处理分布式事务的TCC,只侧重于一致性,无解耦度,也是不可行。

第五种方案:事务消息,它能同时兼顾解耦度和一致性,是最合适的模式。最终我们选择了RocketMQ的事务消息作为分布式事务的解决方案。

image.png

图:五种解决方案详情


6.3.3.4 RocketMQ 事务消息核心流程


基于RocketMQ的事务消息搭建事务中心,协调分布式事务的推进和回滚。以优惠购为例,核心流程如下:

第一阶段:Prepare 阶段,即业务系统将RocketMQ 的半事务消息发送到事务中心,事务中心不做发布,等待二次确认。这个阶段RocketMQ的半消息在消费者端是感知不到的。

第二阶段:业务系统执行主事务,即购买货币基金。

第三阶段:主事务成功后commit到事务中心,由事务中心投递消息到从事务。如果主事务失败,就投递rollback给事务中心。这里需要两阶段提交的原因是:普通的入队操作无论放在主事务之前还是之后都无法保证最终一致。如果先执行主事务,再入队,那么可能在入队前,业务会宕机,就没有机会再入队了。如果先入队再执行主事务,那么可能主事务没有执行成功,但是从事务执行成功了,业务逻辑就会发生错乱。

image.png

图:事务消息解决分布式事务


由于网络抖动等原因,可能导致事务消息的二次确认丢失。此时需要依赖某种机制恢复整个分布式事务的上下文,RocketMQ 提供的反查机制正是为解决分布式事务中的超时问题而设计的。 我们的事务中心的反查机制流程主要是,先检查事务中心的内部状态,再通过反查接口检查本地事务的执行结果,恢复事务上下文后,正常推进后续的流程。

image.png

图:事务消息可靠性保障


《企业级云原生白皮书项目实战》——第六章 云原生最佳实践——6.3 基于 RocketMQ 的基金数字化陪伴体系的架构实践——6.3.3 RocketMQ 事务消息的金融应用场景(3): https://developer.aliyun.com/article/1227771?groupCode=supportservice

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
消息中间件 运维 监控
企业级短信验证码服务架构设计与最佳实践
随着移动互联网的发展,短信验证码成为用户身份验证的重要手段。本文从企业级应用角度出发,探讨如何构建高可用、高并发和安全可靠的短信验证码服务。通过多通道冗余、故障自动切换和服务降级保障高可用性;利用异步处理与消息队列应对高并发;借助多层防刷、内容审核和数据加密提升安全性。同时,提供了详细的架构设计、核心模块代码示例以及监控运维方案,帮助读者理解并实现一个完整的短信验证码系统。
698 2
|
9月前
|
存储 监控 安全
132_API部署:FastAPI与现代安全架构深度解析与LLM服务化最佳实践
在大语言模型(LLM)部署的最后一公里,API接口的设计与安全性直接决定了模型服务的可用性、稳定性与用户信任度。随着2025年LLM应用的爆炸式增长,如何构建高性能、高安全性的REST API成为开发者面临的核心挑战。FastAPI作为Python生态中最受青睐的Web框架之一,凭借其卓越的性能、强大的类型安全支持和完善的文档生成能力,已成为LLM服务化部署的首选方案。
1379 3
|
存储 缓存 分布式计算
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
本文将深入探讨基于 StarRocks 和 Iceberg 构建的云原生湖仓分析技术,详细解析两者结合如何实现高效的查询性能优化。内容涵盖 StarRocks Lakehouse 架构、与 Iceberg 的性能协同、最佳实践应用以及未来的发展规划,为您提供全面的技术解读。 作者:杨关锁,北京镜舟科技研发工程师
StarRocks x Iceberg:云原生湖仓分析技术揭秘与最佳实践
|
人工智能 Cloud Native 安全
从云原生到 AI 原生,网关的发展趋势和最佳实践
本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三)在云栖大会的精彩分享。讲师深入浅出的分享了软件架构演进过程中,网关所扮演的各类角色,AI 应用的流量新特征对软件架构和网关所提出的新诉求,以及基于阿里自身实践所带来的开源贡献和商业能力。
1276 113
|
人工智能 JavaScript 安全
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
898 13
【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
|
消息中间件 存储 Cloud Native
基于 RocketMQ 的云原生 MQTT 消息引擎设计
基于 RocketMQ 的云原生 MQTT 消息引擎设计
724 1
|
搜索推荐 小程序 物联网
基于HarmonyOS 5.0的元服务:技术架构、应用场景与未来发展【探讨】
鸿蒙OS 5.0推出的元服务(Super Service)是一种创新的服务架构,旨在提供无缝的跨设备体验。它具备无感知启动、跨设备共享和智能推送等特点,适用于智能家居、车载系统、即时通讯等场景。与传统应用及微信小程序相比,元服务更轻量、跨平台能力强,且无需下载安装。未来,元服务将通过AI增强智能化,并扩展到更多行业,如智慧医疗、智能零售等,推动物联网和智慧城市的发展。然而,其发展仍面临平台依赖、隐私安全等挑战。
基于HarmonyOS 5.0的元服务:技术架构、应用场景与未来发展【探讨】
|
容灾 网络协议 数据库
云卓越架构:云上网络稳定性建设和应用稳定性治理最佳实践
本文介绍了云上网络稳定性体系建设的关键内容,包括面向失败的架构设计、可观测性与应急恢复、客户案例及阿里巴巴的核心电商架构演进。首先强调了网络稳定性的挑战及其应对策略,如责任共担模型和冗余设计。接着详细探讨了多可用区部署、弹性架构规划及跨地域容灾设计的最佳实践,特别是阿里云的产品和技术如何助力实现高可用性和快速故障恢复。最后通过具体案例展示了秒级故障转移的效果,以及同城多活架构下的实际应用。这些措施共同确保了业务在面对网络故障时的持续稳定运行。
|
运维 监控 BI
卓越架构之FinOps最佳实践
本文探讨了云成本管理的趋势和FinOps的最佳实践。随着云计算的普及,传统的IT管理模式已无法适应按需使用和按量付费的新模式,导致企业面临资源浪费和成本失控的风险。FinOps作为一种管理理念,强调运维、财务和技术团队的合作,通过数据驱动和业务价值驱动的方式优化云成本。文章介绍了FinOps的核心挑战、最佳实践及技术工具的应用,帮助企业有效管理和优化云成本,实现降本增效。