这是一个高并发秒杀系统实战项目, springboot+mybatisplus+mysql+redis+rabbitmq
秒杀模块
并发处理:
1.没到秒杀时间以及秒杀结束之后秒杀按钮是不能够点击的
2.秒杀地址的隐藏(先获取秒杀地址再进行秒杀,而不是直接走秒杀接口,没到秒杀时间根本不知道秒杀的地址防止脚本)
3.验证码(防止脚本以及分散大量的请求同一时间过来)
4.接口限流
解决库存超卖:
1.判断库存 库存大于0才会去减库存, 否则直接返回(sql语句)
2.判断同一用户重复抢购 加唯一索引处理 用户id+商品id
秒杀服务流程:
1.系统初始化的时候把商品库存加载到redis中
2.收到秒杀请求的时候,redis预减库存(递增递减这些都是原子性操作),库存不足直接返回,否则我们可以走下一步
3.将请求进入队列,返回排队中...
4.当队列里的消息被消费者监听进行消费的时候就会生成订单,减少库存
5.客户端轮询是否真的下单成功
6.redis预减库存没库存的情况下,仍然频繁的访问redis,我们用内存标记减少redis的访问
2021-12-15 22:02:02
35.11MB
资源包
1