下单功能时序图分析|学习笔记

简介: 快速学习下单功能时序图分析

开发者学堂课程【RocketMQ 知识精讲与项目实战(第二阶段)下单功能时序图分析】学习笔记,与课程紧密联系,让用户快速学习知识。

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


下单功能时序图分析

image.png

首先分析一下时序图(如上图),这个时序图上面显示整个下单业务所有的流程,用户请求订单系统,这个外部系统去完成下单的请求。

现在订单系统接收到用户请求后去调用这个订单服务,去完成一个订单的保存。

调用下单服务怎么调用的呢?通过远程 RPC 方式去调用,然后订单服务接收到订单请求之后,现在先去完成校验订单操作,再生成预订单,这个预订单对于用户来说是不可见的,再去完成扣减库存操作,把订单当中商品库存进行一个扣减。扣减库存是要去通过远程 RPC 方式去调用这个库存服务去扣减这个库存,扣减成功之后再去调用优惠券服务去完成扣减优惠券的服务,扣减优惠券之后再去调用用户服务去完成扣减余额的操作,当这个扣减余额完成之后在第六步可以进行订单的确认,这个订单确认是在第二步生成预订单时候把这个不可见的订单改为可见的,让用户可见。

如果这一步确认成功之后,其实当前的下单业务就完成了,再给用户做一个享用。

但是如果在这个地方执行失败了,在前面扣减的库存,所扣减的优惠券,所扣减的余额都要回退到原始的状态。所以当如果发生异常,就给 MQ 发送一条消息。

当前的库存服务、优惠券服务还有用户服务以及订单服务,它们都会去同时去监听 MQ 当中的消息。如果发现有得到订单确认消息失败之后,它们分别对库存进行回退,对优惠券进行回退,对余额进行回退以及把这个订单进行取消,这是整个下单业务所有的流程。

现在正式进入开发,在开发的时候分成两条主线去做。首先先把整个成功的流程开发完,然后再去处理异常情况,再通过消息的低智能进行一个失败的补偿体制,这是整体一个编写代码的流程。      

相关文章
|
Ubuntu Linux 时序数据库
sudo apt-get update提示E: 仓库 “http://mirrors.aliyun.com/ubuntu eoan Release” 没有 Release 文件。亲试解决办法
将自己亲身解决这个办法进行分享,希望朋友们可以少走弯路。
10155 1
|
8月前
|
存储 人工智能 监控
钉钉对话机器人实现赞踩收集
本文介绍如何通过AppFlow记录钉钉AI对话卡片的用户反馈情况。首先确保已接入钉钉AI机器人,然后分三步实现:1) 修改钉钉AI消息卡片,添加点赞按钮并配置回调参数;2) 配置钉钉卡片点赞消息接收连接流,更新卡片状态;3) 设置日志收集节点,存储用户反馈数据。完成配置后,用户可在群聊中与机器人互动,并使用点踩点赞功能,反馈数据将被有效记录和分析。
714 6
钉钉对话机器人实现赞踩收集
时序图----购买商品的时序图画法
这篇文章介绍了如何绘制购买商品的时序图,包括用户(商家、顾客)与在线购物系统以及在线购物系统与第三方支付系统之间的交互过程。
时序图----购买商品的时序图画法
|
12月前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
9227 2
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
|
设计模式 Java 关系型数据库
【阿里规约】阿里开发手册解读——命名规范篇
本文中所有代码命名规范遵循《阿里规约》,从包名、类名、变量名等角度展开,详细阐述测试类、枚举类、数组、布尔型变量、方法等元素的命名规范。
【阿里规约】阿里开发手册解读——命名规范篇
|
移动开发 JavaScript 前端开发
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
这篇文章介绍了在UniApp H5项目中处理跨域问题的两种方法:通过修改manifest.json文件配置h5设置,或在项目根目录创建vue.config.js文件进行代理配置,并提供了具体的配置代码示例。
UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)
|
开发者
如何画业务架构图
如何快速上手画业务架构图
11813 2
|
Kubernetes Cloud Native Java
灰度发布、蓝绿部署、金丝雀都是啥?
在滚动部署中,应用的新版本逐步替换旧版本。实际的部署发生在一段时间内。在此期间,新旧版本会共存,而不会影响功能和用户体验。这个过程可以更轻易的回滚和旧组件不兼容的任何新组件。
灰度发布、蓝绿部署、金丝雀都是啥?
|
数据采集 人工智能 算法
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
你要牢记的四个常用AI提示词框架:ICIO、CRISPE、BROKE、RASCEF,有助于获取更加稳定和高质量的内容
|
uml C语言
如何画系统时序图
如何画系统时序图
576 0