网站品牌打造,wap开头的网址,个人个案网站 类型,东莞建站公司快荐全网天下特别好1.缓存秒杀商品库存到redis
2.用户访问秒杀商品#xff0c;进行商品的抢购
3.判断用户是否存在未支付的秒杀订单#xff0c;如果存在#xff0c;告知用户#xff0c;请先支付。#xff08;幂等#xff09;
4.判断排队人数是否达到上线。redis ,incrment() 达到上线进行商品的抢购
3.判断用户是否存在未支付的秒杀订单如果存在告知用户请先支付。幂等
4.判断排队人数是否达到上线。redis ,incrment() 达到上线直接返回请稍后重试 //后面的请求都是异步请求 spring Async 线程池 5.排队人数没有达到上线存储当前用户的排队信息进行库存的预扣减 使用 redis decrment 进行库存的自减操作。
6.创建秒杀订单对象skillOrder 发送消息给订单微服务和库存微服务
7.订单微服务把订单存储到mysql 表中。 为什么需要MQ进行远程调用因为可以MQ的QOS预抓取总是防止请求的洪灾
8.库存微服务根据购买的商品增减数据库秒杀商品的库存信息 发送延迟消息给MQ 15分钟
9.如果用户抢购成功但是15钟没有支付补偿关闭订单支付通道 回滚商品的库存。
10.如果抢购并且支付微信回调接口修改订单的支付状态并且更新用户的抢购排队信息。 存在问题
1.如何防止超卖redis 预扣减库存 decrment
2.如何防止用户恶意访问 redis incrment 防止用户重复排队 实现防止恶意刷单
3.支付失败怎么办延迟队列15分钟未支付回滚用户的库存信息
4.实现防止相同商品重复秒杀 在用户请求进来后马上就判断用户是否redis 存储已经下单的数据
5.实现下单接口限流AOP令牌桶限流
6.实现秒杀下单接口隐藏1.新增一个方法生成一个code码返回给前端。 2.用户在秒杀请求发送之前先调用新增方法生成一个code码然后携带code码才能访问秒杀接口。