- 秒杀系统主要解决两个问题,一个是并发写,一个是并发读
- 首先需要和常规的电商系统隔离,避免影响正常的业务流程
- 同时还需要注意系统的高性能,高扩展,高可用,以及数据一致性(减库存)
秒杀架构的原则
- 请求数据要尽量少
- 请求数要尽量少
- 路径要尽量短
- 依赖要尽量少
- 不要存在单点
实现
实现动静分离
- 所谓动态数据就是指页面输出数据是否和url,浏览者,时间地域等有关系
- 静态数据是指不变的数据, 静态数据直接上CDN,请求不到后端服务
削峰
- 排队
- 队列来承接流量的冲击,但是达到队列的处理瓶颈后,会有请求丢失
- 答题
- 防刷
- 分散请求
- 分层过滤
- 从每一层都拦截或者丢弃(当处理能力达到瓶颈时)一部分的流量来进行请求的削峰
减库存
- 下单减库存
- 很多下单后没有付款,导致其他人不能正常购买
- 付款减库存
- 下单数多于库存,导致一些付款无法成功
- 预扣库存 例如库存预留十分钟时间,当真实付款时检查是否过期,如果过期则就去减库存,如果没有库存则付款失败
- 同样会存在作弊行为