[发明专利]高并发快响应的秒杀库存精准扣减的方法、装置及系统有效
申请号: | 201611085964.6 | 申请日: | 2016-11-30 |
公开(公告)号: | CN108133399B | 公开(公告)日: | 2021-01-26 |
发明(设计)人: | 兰华勇 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06Q30/06 | 分类号: | G06Q30/06;G06Q30/02;G06F16/22;G06F16/23 |
代理公司: | 中原信达知识产权代理有限责任公司 11219 | 代理人: | 张一军;赵静 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并发 响应 库存 精准 扣减 方法 装置 系统 | ||
本发明提供一种高并发快响应的秒杀库存精准扣减的方法、装置及系统,能够解决高并发大流量的用户抢购场景下出现的库存少扣或多扣问题。该方法包括:根据秒杀活动的库存数量,初始化生成相应个数的具有唯一标示值的token,并将所述token保存在Redis缓存队列中;如果根据用户购买请求,从Redis缓存队列中获取到token,则将用户信息插入订单数据库,若插入成功则库存扣减成功,所述用户信息包括用户标识信息以及用户下单信息;若插入失败,则库存扣减失败,将获取的token回退至Redis缓存队列。
技术领域
本发明涉及计算机技术及软件领域,尤其涉及一种高并发快响应的秒杀库存精准扣减的方法、装置及系统。
背景技术
秒杀抢购促销活动日益成为电商公司吸引用户注册及提升用户活跃度的重要手段。其中,秒杀库存是否精确扣减是衡量秒杀系统是否可靠运行的关键指标。秒杀活动开始前,通常会根据商品ID(以下简称“SKUID”)创建一个秒杀促销活动(一个秒杀促销活动对应一个促销ID,以下简称“PromoID”),设定秒杀开始结束时间、秒杀价格、秒杀库存等信息。
现有技术中,秒杀库存(以下简称“stock”)的初始化存储及扣减方式主要分为以下几种:
方式1:秒杀活动开始前,将秒杀库存初始化并存入库存数据库。秒杀活动开始时,库存的扣减步骤:第一步,查询PromoID对应的库存stock;第二步,当库存stock0时,update stock=stock-1,否则抢购失败;第三步,插入订单数据库生成用户订单信息,若插入失败,则回退库存update stock=stock+1,否则抢购成功。具体流程如图1所示。
方式2:秒杀活动开始前,将秒杀库存初始化并存入库存缓存队列,秒杀活动开始时,库存的扣减步骤:第一步,获取PromoID对应的库存stock;第二步,当库存stock0时,set stock=stock-1,否则抢购失败;第三步,当库存stock0时,抢购失败,否则进入第四步,插入订单数据库生成用户订单信息,若插入失败,则回退库存set stock=stock+1,否则抢购成功。具体流程如图2所示。
但是,上述秒杀库存存储及扣减的方式或多或少存在一些不足之处,尤其是在高并发大流量的用户抢购请求下,库存将出现少扣或多扣现象,造成秒杀活动出现超卖或少卖的结果。具体如下:
方式1中:秒杀库存stock存储于关系型数据库,受制于连接数及数据库自身的限制,在高并发请求下,数据库性能将急剧下降甚至出现异常,导致查询及更新库存失败。另外,方式1的库存扣减逻辑在高并发下将导致库存多扣的风险,造成多扣的原因参见图3:若T1-T2时刻之间,并发请求A、B、C查询库存stock==1即有库存,此时分别进行库存扣减,由于库存扣减操作需要锁行,即同一时刻,仅有一个请求获得行锁,进而请求A、B、C将按顺序以串行的方式对库存进行扣减,最终将库存扣减为负数并抢购成功,显然出现库存多扣即超卖现象。
方式2中:相较于方式1而言,将秒杀库存存储于key-value的缓存队列中带来的明显好处是:在高并发场景下,查询及扣减库存几乎不会对缓存性能产生影响,进而能够有力地支撑秒杀系统的正常运行。同时,为了解决库存多扣问题,在方式1的基础上,增加了库存扣减更新后的判断逻辑,进而避免了出现超卖的现象,如图4所示。但是,方式2也存在明显的不足之处:若用户扣减存库成功但用户信息插入订单数据库失败,则会回退库存,此时库存stock+1之后仍然为负数,如若下个请求D进来时判断库存数量小于0,则抢购失败,即出现了少卖现象。如图5所示。
发明内容
有鉴于此,本发明提供一种高并发快响应的秒杀库存精准扣减的方法、装置及系统,能够解决高并发大流量的用户抢购场景下出现的库存少扣或多扣问题。
为实现上述目的,根据本发明的一个方面,提供了一种高并发快响应的秒杀库存精准扣减的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611085964.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种基于快店通商城管理系统的技术实现
- 下一篇:一种网上竞价售票方案