当前位置:   article > 正文

秒杀的执行流程

秒杀的执行流程

IMPORTANT:

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

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

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

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

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

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

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号