秒杀的执行流程

IMPORTANT:

多个请求发送过来,首先通过反向代理服务器nginx作为网关进行拦截,作为nginx可以执行一种内置的脚本语言LUA脚本语言,LUA可以执行一系列的命令,可以通过nginx在秒杀请求进来以后,可以从redis调用这个命令(decr"stk-1001")(decr指递减操作,也是原子性操作), 执行这一系列操作后,如果有库存,就会进入MQ消息队列进行下一步运行,如果没有库存,LUA就会直接将结果返回给APP,APP显示没有库存了。

抢购成功后,如果没有MQ做缓存,订单数据就会直接进入到订单程序中, 订单程序本质上就是创建订单和删除订单,进行一系列的数据库操作,这样会增加数据库的瞬时压力,容易造成系统崩溃。所以这里要增加MQ,进行Qos限流,我们可以在MQ中设置一个数值,来允许通过MQ向这个订单程序允许同时推送最大的订单数量,进而减轻了数据库的压力。防止了数据库在短时间内的大流量冲击。

这里的nginx和redis是判断哪些用户可以秒杀成功,哪些用户会被挡在外面(订单的数量有限)。

MQ用于限流,防止突发性的大流量的数据库冲击。

在支付成功之后,订单程序会进行轮询操作(每隔多少秒向来定时的查询后台的订单是否完成)。

 如果秒杀成功之后,用户没有支付,或者取消订单了怎么办?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小懒懒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值