下单问题分析及解决方式|学习笔记

简介: 快速学习下单问题分析及解决方式

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)下单问题分析及解决方式】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/703/detail/12349


下单问题分析及解决方式


本节分析在完成综合案例两大功能时有哪些值得关注的问题。

先来查看下单时存在哪些问题,观察流程图

image.png

首先用户发起下单请求到达后台系统然后后台系统接收到用户请求后进行扣减库存,再进行使用优惠券,进行余额的使用,再进行订单的确认。

image.png

根据基本流程的分析如果在最后确认订单时发生了异常,那么之前扣减的库存优惠券余额都要还原。

image.png

观察下面时序图,详细描述了下单全部流程。用户下单后在下单系统,订单系统接收到订单请求后调用订单服务完成下单。

订单服务先进行订单校验,校验订单参数查看是否合法,然后生成预订单,该订单对于用户不可见,然后再通过 rpc方式调用库存方式减库存,调用优惠券扣减优惠券,再调用用户服务完成扣减余额。操作无误后进行第六步,将上述生成的预订单进行确认,将状态改为可见。

以上就是基本流程,但是如果在确认订单时发生异常如何保证回退?在此处再通过 RPC 方式再调用三个服务会造成用户响应时间变长,在既想保证数据回退,又要保障快速处理。

最好的解决方式是使用消息服务:如果 catch 到异常,在订单服务中给 MQ 发送订单确认失败消息,这三个服务分别去监听 MQ 中有没有确认订单失败消息。如果监听到就完成自己的回退操作:回退库存、回退优惠券、回退余额。

此处订单服务也监听消息,若有确认订单失败,就将刚才生成的订单设置为取消。这样通过 MQ 很好的处理了现在的问题,保证了数据的完整性。

以上就是下单时需要关注的问题以及问题基本的解决方案:通过 MQ 保障数据的完整性。

相关实践学习
消息队列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
相关文章
|
22天前
|
缓存 NoSQL Java
高并发场景秒杀抢购超卖Bug实战重现
在电商平台的秒杀活动中,高并发场景下的抢购超卖Bug是一个常见且棘手的问题。一旦处理不当,不仅会引发用户投诉,还会对商家的信誉和利益造成严重损害。本文将详细介绍秒杀抢购超卖Bug的背景历史、业务场景、底层原理以及Java代码实现,旨在帮助开发者更好地理解和解决这一问题。
53 12
|
7月前
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
147 0
|
8月前
|
消息中间件 存储 NoSQL
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
449 0
|
8月前
|
消息中间件 NoSQL 中间件
关于实现订单超时的几种方案(详细细节版)
关于实现订单超时的几种方案(详细细节版)
212 0
关于实现订单超时的几种方案(详细细节版)
|
消息中间件 存储 资源调度
订单超时怎么处理?我们用这种方案
在电商业务下,许多订单超时场景都在24小时以上,对于超时精度没有那么敏感,并且有海量订单需要批处理,推荐使用基于定时任务的跑批解决方案。
1671 12
订单超时怎么处理?我们用这种方案
|
SQL 前端开发 NoSQL
谈一谈大厂都怎么防止重复下单?
谈一谈大厂都怎么防止重复下单?
|
SQL 监控 NoSQL
高并发-【抢红包案例】之三:使用乐观锁方式修复红包超发的bug
高并发-【抢红包案例】之三:使用乐观锁方式修复红包超发的bug
162 0
|
SQL Web App开发 BI
高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
119 0
|
消息中间件 RocketMQ 开发者
下单异常问题演示|学习笔记
快速学习下单异常问题演示
113 0
下单异常问题演示|学习笔记
|
消息中间件 监控 数据处理
支付回调问题分析和解决方式|学习笔记
快速学习支付回调问题分析和解决方式
523 0
支付回调问题分析和解决方式|学习笔记