高频面试题深度解析:如何设计一个百万级并发的秒杀系统?

秒杀系统是典型的高并发、短时流量洪峰场景。用户可能在1秒内涌入百万次请求,但库存可能只有100件商品。如何保证系统不崩溃、不超卖、不卡顿?本文将结合实战经验,梳理秒杀系统的核心设计原则和关键技术方案。


一、为什么秒杀系统难?

假设一场秒杀活动:1000件商品,10万人同时抢购
系统可能面临:

  1. 数据库击穿:每秒数万次查询直接打垮MySQL。
  2. 超卖问题:并发扣减库存导致实际卖出数量超过库存。
  3. 服务雪崩:某个节点崩溃后,引发连锁反应。

设计目标
✅ 不超卖
✅ 高可用(99.99%可用性)
✅ 低延迟(用户秒级响应)


二、分层拦截:90%的流量不进后端

1. 前端优化:拦截无效请求
  • 静态资源CDN化
    商品详情页提前渲染为静态HTML,通过CDN分发,减少90%动态请求。

    
    <div class="countdown" data-start="2024-06-01 20:00:00">div>
    

    运行 HTML

  • 按钮防重复点击
    点击后禁用按钮,防止用户疯狂连点。

    document.getElementById("buyButton"

你可能感兴趣的:(面试,java,面试)