开始 - 秒杀系统概述

秒杀活动的特点是“少量库存 + 巨大瞬时流量”。用户看到的只是一个抢购按钮,但系统背后要同时处理流量接入、资格校验、库存扣减、订单生成、支付超时、风控拦截和结果通知。

如果直接把所有请求打到数据库,下场通常是:

  • 数据库连接池被打满。
  • 库存行被频繁加锁。
  • 成功用户很少,失败请求却消耗了大部分资源。
  • 脚本流量抢占正常用户机会。
  • 订单和库存状态出现不一致。

秒杀系统的核心目标

秒杀系统不是让所有请求都成功,而是让有限库存被公平、正确、可控地卖出:

  • 不超卖:卖出的商品数不能超过库存。
  • 不少卖:库存真实存在时不要因为系统异常浪费。
  • 抗高峰:流量洪峰不能压垮核心服务。
  • 可解释:用户知道排队、售罄或失败原因。
  • 可治理:脚本、黄牛和异常账号要被识别和限制。

关键取舍

秒杀设计里最常见的取舍是:

  • 同步下单体验好,但高峰期容易拖垮系统。
  • 异步排队能削峰,但用户要等待结果。
  • 数据库扣库存一致性强,但吞吐低。
  • Redis 扣库存吞吐高,但需要补偿和对账。

本课程会按真实演进路线展开:先理解业务特性,再从数据库锁方案开始,逐步引入 Redis、队列、限流、库存同步和风控。

章节