提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
什么是秒杀:
是一种高并发的技术,许多电商网站都是采用这样的技术应对突发流量的问题
一、考虑要点
- 查询数据库的信息,查看该商品是否存在
- 验证购买上线
- 进行秒杀时间的比较,确保活动有效时间内
- 查询用户是否下过订单,防止重复下单
- 查看库是否存在
- 生成订单
- 订单生成成功后进行减库存
二、预减库存
- 服务启动时 通过单例bean的声明周期原理 实现InitialingBean接口 实现方法 去将秒杀商品缓存到redis
- 库存判断通过redis来做
- 加了锁 QPS 1700+ 通过秒杀订单数量 是不是和秒杀库存一致
三、秒杀超卖
为了避免多线程导致的数据不一致性,采用锁机制保护共享资源
java锁的实现: synchronized ReentrantLock
四、排它锁是什么?
排它锁是一种锁机制 避免其他用户同时修改同一份数据导致的数据不一致问题。
Mysql排他锁,在修改数据库库存的时候,加个验证 库存量>0
FOR UPDATE:
SELECT * FROM t_user FOR UPDATE