秒杀抢购 day7--用户下单

用户下单

商品分为热点商品抢单和非热点商品抢单,因此此系统中抢单模式并非一种。

抢单分析

在这里插入图片描述
下单的核心业务是,先判断商品是否为热点商品,如果是非热点商品,则直接调用订单系统进行下单操作,如果是热点商品,则向Kafka生产消息进行排队下单,订单系统会订阅排队下单信息,这样可以降低服务器所直接承受的抢单压力,这种操作也叫队列削峰。

非热点商品抢单

​ 我们在订单系统中实现非热点商品抢单操作,非热点商品只用在订单系统中实现抢单即可,但抢单的时候要注意这么几个问题:

1.先递减库存,需要保证减库存的原子性操作
2.库存递减成功后,再执行下单
3.因为涉及到商品和订单两个微服务,所以下单失需要实现分布式事务
4.下单成功后,要记录用户抢单信息,指定的时间内不允许再抢该商品(这里指定24小时内只能秒杀一次)

热点商品抢单

​ 上面我们完成了非热点商品抢单,接着我们实现以下热点商品抢单。热点商品和非热点商品不一样,热点商品已经隔离出来,在Redis缓存中,并且热点商品抢单要实现高效率操作而且还能抗压,Nginx的并发能力远远超越tomcat,因此热点商品抢单我们可以使用Lua+Nginx。

抢单流程分析

​ 用户进入抢单流程,通过Lua脚本判断令牌是否有效,如果有效,则进入抢单环节,抢单环节执行过程我们做一个分析:

1.判断该商品用户是否在24小时内购买过
2.如果购买了,直接提示用户24小时内无法购买
3.如果用户没有购买过该商品,则判断该商品是否属于热点商品
4.如果是非热点商品,则走非热点商品抢单流程
5.如果是热点商品,则走热点商品抢单流程
6.判断该商品用户是否已经排队,如果没有排队,则进入排队,如果已经排队,则提示用户正在排队
7.下单过程交给订单系统,订单系统通过队列订阅读取用户下单信息,并进行下单
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值