# 《Seckill秒杀系统》第26章:重现库存超卖问题

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)
课程视频:https://t.zsxq.com/11mkhHCdq (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:使用JMeter压测秒杀下单接口,重现库存超卖问题,让大家直观的感受库存超卖问题带来的后果。
  • 课程视频:https://t.zsxq.com/11mkhHCdq (opens new window)

大家好,我是冰河~~

像秒杀这种高并发大流量的场景,最核心的功能就是交易,大量用户在秒杀系统中抢购有限数量的商品,这就会造成商品资源的短缺,如果秒杀系统在设计和实现时,稍有不慎,就会出现库存超卖的严重后果。

# 一、前言

秒杀系统上线后需要防范两个典型问题,也是两个非常致命的问题,一个就是刷单流量问题,刷单流量是无效流量,会挤占正常用户抢购商品的通道,并且会大量占用服务器系统资源,如果秒杀系统不加以任何控制措施,很有可能被刷单流量压垮。另一个就是库存超卖问题,库存超卖问题就是实际下单的商品数量大于商品的库存数量,超过了商品设置的库存上限,库存超卖是非常严重的问题,会直接导致平台的经济损失。

# 二、本章诉求

库存超卖是非常严重的问题,会直接导致平台的经济损失,所以,秒杀系统在上线前,一定要经过严格的测试,并且也需要经过严格的全链路压测,确保不会出现库存超卖的问题。本章,就简单模拟库存超卖的现象,以此让大家直观的感受库存超卖对平台带来的影响。

# 三、模拟库存超卖流程

库存超卖往往是由于瞬时高并发流量引入系统,大量用户抢购下单有限库存数量的商品引起的。模拟库存超卖的流程如图26-1所示。


可以看到,用户登录秒杀系统后,可以查看活动列表、查看商品列表,抢购自己感兴趣的商品,并提交订单。如果参与秒杀的用户比较多,此时系统没有做任何防御措施的话,就会使得大量的流量涌入秒杀系统,大量的用户抢购下单有限库存数量的商品,比如秒杀商品的库存只有100件。对于下单扣减库存业务来说,如果没有精心的设计,或者在处理方式上存在漏洞的话,很容易引起库存超卖的问题。

# 四、模拟库存超卖实现

本节,就简单使用JMeter模拟并发下单,重现库存超卖的问题,具体操作步骤如下所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码