带你读《企业级云原生白皮书项目实战》——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版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
16天前
|
消息中间件 存储 Java
RocketMQ(一):消息中间件缘起,一览整体架构及核心组件
【10月更文挑战第15天】本文介绍了消息中间件的基本概念和特点,重点解析了RocketMQ的整体架构和核心组件。消息中间件如RocketMQ、RabbitMQ、Kafka等,具备异步通信、持久化、削峰填谷、系统解耦等特点,适用于分布式系统。RocketMQ的架构包括NameServer、Broker、Producer、Consumer等组件,通过这些组件实现消息的生产、存储和消费。文章还提供了Spring Boot快速上手RocketMQ的示例代码,帮助读者快速入门。
|
16天前
|
边缘计算 Cloud Native 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
39 4
|
1月前
|
运维 Cloud Native 安全
云原生架构:企业数字化转型的新引擎##
【10月更文挑战第2天】 在当今数字化浪潮中,云原生架构以其独特的优势成为企业实现高效、灵活和创新的核心驱动力。本文深入探讨了云原生的概念、核心技术如容器化、微服务和DevOps等,并分析了这些技术如何共同作用,推动企业在云平台上实现快速迭代、弹性扩展和资源优化。同时,文章还阐述了云原生在实际应用中面临的挑战及相应的解决策略,为企业的数字化转型提供全面而深入的指导。 ##
48 17
|
25天前
|
运维 Cloud Native 持续交付
探索云原生架构:企业数字化转型的新引擎
在当今数字化浪潮中,云原生架构以其独特的优势成为企业转型的关键。它通过容器化、微服务、DevOps和持续交付等技术,使企业能够快速响应市场变化,实现应用的高效开发、部署和运维。本文将深入探讨云原生的概念、核心技术及其在现代IT环境中的重要性。
|
28天前
|
Kubernetes 监控 Cloud Native
探索云原生架构:企业数字化转型的新引擎
【10月更文挑战第5天】 在当今数字化浪潮中,云原生架构以其独特的优势成为企业实现高效、灵活和可扩展的关键。本文将深入探讨云原生的核心概念、关键技术以及实际应用案例,揭示其在推动企业数字化转型中的重要作用。
33 6
|
25天前
|
运维 Kubernetes Cloud Native
探索云原生架构:企业数字化转型的新引擎
【10月更文挑战第9天】 在当今数字化浪潮中,云原生架构以其独特的优势成为企业实现高效运营和快速创新的关键。本文将深入探讨云原生的核心概念、关键技术以及实际应用案例,揭示其如何助力企业加速数字化转型步伐。通过对云原生技术的剖析,我们将看到这一新兴架构是如何重新定义软件开发、部署和运维模式的,进而推动企业在激烈的市场竞争中脱颖而出。
|
1月前
|
监控 Cloud Native 持续交付
云原生架构:企业数字化转型的新引擎##
在当今数字化浪潮中,云原生架构正成为推动企业创新和竞争力的关键因素。本文探讨了云原生的核心概念、技术优势以及在现代业务场景中的应用实践,揭示了其如何助力企业实现高效运营、灵活扩展与持续集成。通过对云原生技术的深入剖析,我们将看到它不仅是一种技术趋势,更是企业数字化转型的战略选择。 ##
36 5
|
2月前
|
运维 Cloud Native Devops
云原生架构下的企业数字化转型之路##
在当今数字化浪潮中,企业如何实现高效、灵活的转型,成为行业焦点。云原生技术以其独特的优势,如容器化、微服务、DevOps等,正引领一场变革。本文将深入探讨云原生技术的基本原理、核心组件及其在实际应用中的案例,为企业提供一条清晰的云原生转型路径。通过分析云原生如何助力企业提升业务敏捷性、降低运维成本、增强系统弹性和安全性,我们将揭示其背后的深刻内涵与广阔前景。 ##
|
3月前
|
运维 Cloud Native 持续交付
云原生架构:企业数字化转型的加速器
【8月更文挑战第7天】在数字化浪潮中,云原生架构成为企业转型的关键。它不仅改变了应用的开发、部署和管理方式,还提升了系统的可伸缩性、弹性和自动化能力。本文将探讨云原生的核心概念、优势以及它如何助力企业实现敏捷和高效的运营。
|
2月前
|
运维 Cloud Native Devops
探究云原生架构:企业数字化转型的新引擎
在当今数字化浪潮中,云原生技术以其独特的优势,正成为推动企业IT变革的重要力量。它不仅能够提升企业的开发效率和业务灵活性,还能帮助企业更好地应对复杂多变的市场环境。本文将深入探讨云原生的核心概念、关键技术以及实际应用价值,旨在为读者提供一个全面而清晰的云原生技术视角。

热门文章

最新文章