业务特点:秒杀业务的独特特点和挑战

场景:双十一零点的狂欢 🎉

想象一下这个场景:

2024年11月11日 00:00:00

你正在参加天猫双十一秒杀活动,准备抢购一台原价5999元、秒杀价2999元的iPhone 15 Pro。

你的准备

  • 📱 双手紧握手机
  • 👆 手指悬停在”立即抢购”按钮上
  • ⏰ 眼睛盯着倒计时:00:00:03… 00:00:02… 00:00:01…
  • 💪 肌肉紧绷,准备点击

系统面临的挑战

输出结果

📊 秒杀流量特征:
  平时 QPS: 1,000
  秒杀 QPS: 500,000
  流量激增: 500倍
  时间集中: 几秒钟内
  用户集中: 同一商品

🔥 服务器压力:
  正常情况: 10 台服务器
  秒杀需要: 5000 台服务器
  成本增加: 500.0倍

⚠️ 现实问题:
  不能为了几秒钟的秒杀,准备500倍的服务器!
  成本太高,资源浪费严重!

秒杀业务的核心特点

1. ⚡ 瞬时高并发

秒杀最显著的特点就是瞬时流量激增

流量对比表

时间点正常业务 QPS秒杀业务 QPS倍数
10:001,0001,0001x
10:051,2001,0001x
10:091,10050,00045x
10:09:301,000500,000500x
10:10:001,100500,000455x
10:10:101,200250,000208x

2. 📦 库存有限且热点集中

秒杀商品的库存通常很少,但关注度极高:

库存竞争示意

用户请求队列:
[用户1] → [用户2] → [用户3] → ... → [用户500000]

数据库行锁 🔒

[库存: 100] ← 同一行记录被所有人竞争

串行更新,一次只能一个人改

3. ⏰ 时间限制严格

秒杀有严格的开始和结束时间:

4. 🎯 结果确定性强

秒杀结果只有两种:成功或失败,没有中间状态:

与普通电商的对比

让我们对比秒杀和普通电商的区别:

维度普通电商秒杀活动差异程度
流量特征平稳波动瞬时暴增500倍🔥🔥🔥
库存热点分散到多个商品集中在少量商品🔥🔥🔥
并发量QPS 1000-5000QPS 50万-100万🔥🔥🔥
持续时间全天24小时几秒到几分钟🔥🔥🔥
用户耐心几秒到几分钟必须即时响应🔥🔥
一致性要求最终一致强一致不能超卖🔥🔥🔥
可降级性部分功能可降级核心功能不能降级🔥🔥
技术难度常规缓存+负载均衡专用架构+特殊优化🔥🔥🔥

真实案例分析

让我们看几个真实的秒杀案例:

想一想

在继续学习之前,请思考以下问题:

问题 1:流量激增500倍怎么办?

如果平时QPS是1000,秒杀时达到50万QPS,你会如何应对?

提示

  • 能否增加500倍的服务器?
  • 如何利用现有的资源?
  • 有没有办法”削峰填谷”?

问题 2:库存热点如何解决?

50万人抢购100台手机,都访问同一条库存记录,数据库怎么办?

提示

  • 数据库行锁是串行的
  • 能否把压力转移?
  • 如何保证不超卖?

问题 3:如何保证公平性?

如何确保所有用户在同一时间开始抢购,没有人能作弊?

提示

  • 时间同步问题
  • 提前知道库存信息
  • 如何防止脚本抢购?