题目14:秒杀系统设计
📊 评分:— | 📅 完成时间:待完成
📝 题目
如果让你设计一个秒杀系统,你会怎么做?重点说说流量削峰、库存扣减、防超卖、下单链路和高可用设计。
💬 我的回答
📖 参考答案
一、核心目标
- 扛住瞬时高并发
- 防止超卖
- 保证链路可降级
- 尽量提升用户体验
二、常见方案
- 活动预热,秒杀商品提前加载到缓存
- 网关层限流、验证码、黑名单拦截
- 请求先进入 MQ 削峰
- Redis 预扣库存,快速失败
- 异步创建订单,最终落库
- 通过幂等和状态机防止重复下单
三、关键问题
- 防超卖:原子扣减、单线程串行化或 Lua 脚本
- 一人一单:用户维度幂等控制
- 订单超时未支付:延迟队列回补库存
- 高可用:降级、限流、隔离、兜底页
🎯 面试标准话术
"秒杀系统的重点不是把请求全接住,而是让系统有秩序地拒绝一部分请求。通常会用缓存、限流、队列、异步化、库存预扣和幂等控制一起组合,核心目标是防超卖和保系统稳定。"