秒杀系统
学习目标
- 秒杀原理
- 性能测试
- 性能分析
系统目标
- 性能优秀
- 能经受住高并发
- 不会超卖
框架
- Spring
- Redis
- 线程池
思路
lpush N 个需要秒杀商品的序号
lpop 取序号,取不出来则秒杀失败
之后异步存入数据库
一些错误
过度设计
想设计一个秒杀操作可以有不同实现的父类,发现没有必要,我能想到就这一个方案。
秒杀工厂 UML
用 Redis 事务控制秒杀数量
思路是这样,开始事务控制,先 get 数量,后 decrease 之,后提交。
这是错误的。事务只能控制插入是正确的,会读取到脏值。