电商项目相关流程
2021-01-11 11:28:13 40 举报
谷粒商城流程图
作者其他创作
大纲/内容
seckill:stock:#{商品随机码}
订单系统
结束
/submitOrder
优惠劵返还服务
消息队列-应用解耦
订单创建成功
如果库存锁定成功,订单服务炸了,订单都没创建好,必须得拥有自动解锁功能
收获地址发票信息备注应付总价令牌
监听
库存工作单工作单详情
是
订单订单详情
商品的基本信息商品随机码结束时间
商品尝试锁库存
商品详情页展示立即抢购 seckill?key=随机码&skuId=2&num=1
stock.locked
秒杀业务处理
order.release.order
定时任务查询需要上架的秒杀信息
handlerOrder
注册信息写入数据库
剩下的流程,拆单/还是队列做
查询是否有此商品查询是否到了秒杀结束时间
释放订单服务
消息队列-流量消峰
保存库存工作单
50ms
提交订单
order.release.order.queue
order.finsh.#
成功
消息队列
锁库存
用户
订单订单项
重定向到订单确认页
库存解锁
发送注册邮件
通过,删除令牌
撤销
根据规则读取秒杀请求
验证令牌
展示支付选择页
秒杀商品定时上架
order:{token}获取订单号
order.release.coupon.queue
创建订单项
库存系统
快速创建秒杀订单订单号,商品
用户服务加积分等
消息队列自动释放库存
stock.release.#
失败
收货地址确认
写入消息队列
异步读取
否
支付成功
失败随机时间秒杀码对应关系幂等性
seckill:sessionskey:start_endTimeval:{sessionid_skus}
保存库存工作单详情
设计建议规范:(基于事件模型的交换机设置)1、交换机命名:业务+exchange;交换机为Topic2、路由键:事件.需要感知的业务(可以不写)3、队列命名:事件 + 想要监听服务名 + queue4、绑定关系:事件.感知的业务(#)
stock.release
发送注册短信
订单主动取消
超时失败等
订阅
RabbitMQ
stock.release.stock.queue
全部回滚
5ms
订单支付成功
stock-event-exchange
order.finsh.ware.queue
秒杀流程第二种
消息队列流程
封装最新的秒杀商品信息保存到redis中
order.release.other.#
加入购物车,跳转到订单页面?key=xxx
立即抢购
order.create.order
sessionid_skuid作为key,方便详情页面查询商品信息
锁定库存成功
消息队列-异步消息
handlerStock
stock.delay.queue50min
响应150ms
获取信号量
保存redisorder:{token}=orderSn
调用库存接口
登录判断
创建订单号
信号量扣减库存成功远程扣库存成功
秒杀成功,正在给你创建订单
解锁库存服务
秒杀
错误提示页非法请求
seckill:skushash结构
响应55ms
准备订单得分布式闭锁信息
此订单是否存在
合法性效验
验证逻辑
order.finsh.user.queue
oder.finish
下单流程
获取收货地址信息,填充订单
获取购物车中所有的购物项
设置秒杀商品分布式信号量作为库存扣减的信息
提示商品价格发生变化,请重新确认
给MQ发送消息
全部锁定成功
order.delay.queue30min
支付流程
支付确认页
返回
秒杀方式第一种
写入
修改锁定状态
用户请求
提交秒杀订单
令牌验证成功
响应100ms
库存检查是否需要拆单
计算订单金额信息
不存在
订单服务
order.release.other
order-event-exchange
延迟时间到,检查订单状态,确认是否需要解锁stock.release
0 条评论
下一页