典型的瓶颈点
- 佣金实时计算:下单时同步计算佣金、更新余额、刷新团队业绩,链路一长就把数据库打满。
- 分享页与海报生成:海报渲染要拼图、加二维码、上传 CDN,是 CPU 密集型操作,瞬间涌入就会超时。
- 排行榜实时聚合:大促期间每笔订单都要更新排名,频繁写热点数据。
- 库存与超卖:多个分销商同时推同一爆款,库存扣减不一致。
- 消息推送堆积:订单暴涨导致通知队列积压,佣金提醒延迟几小时。
应对办法
- 异步化:佣金计算、业绩统计、消息通知全部丢进消息队列,下单主链路只做必要写入。
- 海报预热:提前为热门商品和活跃分销商批量生成海报并缓存,大促时直接取用。
- 库存预扣:用缓存做库存预扣减,异步落库,配合超卖兜底策略。
- 排行榜降级:大促期间改为每 5 分钟或每 10 分钟更新一次,页面上标注“数据延迟”。
- 限流与削峰:非核心接口(如业绩明细查询)限流,保护主链路。
压测要做在前面
大促前至少做两次全链路压测,目标按预估峰值的 2~3 倍设定。重点压的是下单和佣金写入,这两个环节出问题,后果是钱算错,比页面打不开严重得多。
还要准备一份应急预案:哪些功能可以临时关闭、数据异常时怎么快速修正、谁负责决策。有预案的团队,大促出问题的恢复时间通常能缩短一大半。