[发明专利]一种库存扣减方法和装置在审
申请号: | 201810599888.3 | 申请日: | 2018-06-12 |
公开(公告)号: | CN110599277A | 公开(公告)日: | 2019-12-20 |
发明(设计)人: | 章明忆 | 申请(专利权)人: | 北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司 |
主分类号: | G06Q30/06 | 分类号: | G06Q30/06 |
代理公司: | 11219 中原信达知识产权代理有限责任公司 | 代理人: | 张一军;郭晗 |
地址: | 100195 北京市海淀区杏石口路6*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 交易请求 库存 对象序列 交易对象 用户请求 时间差 预设 并发 计算机技术领域 方法和装置 交易信息 库存查询 大流量 低消耗 报错 遍历 超时 解耦 数据库 场景 保存 衡量 | ||
本发明公开了一种库存扣减方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和各交易请求对应的时间差,生成值对象序列;遍历值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象库存。该实施方式能精准衡量用户请求的优先级,以极低消耗取得各用户请求的优先级,解决极高并发大流量的用户抢购场景下库存少扣或多扣问题,实现了高并发请求的异步解耦,避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,对于限购或者不限购的情形均适用。
技术领域
本发明涉及计算机技术领域,尤其涉及一种库存扣减方法和装置。
背景技术
秒杀抢购促销活动日益成为电商公司吸引用户注册及提升用户活跃度的重要手段。秒杀活动开始前,根据商品ID(即skuID)通过运营后台创建一个秒杀促销活动(一个秒杀促销活动对应一个促销Id),包括秒杀开始时间和结束时间、秒杀价格、秒杀库存等信息。在这种超海量并发请求的场景中,商品库存是否精确扣减是衡量秒杀系统是否可靠运行的关键指标。
现有的库存扣减方案,一是秒杀库存存储于关系型数据库,在高并发请求下,数据库性能将急剧下降甚至出现异常,导致查询及更新库存失败,由于库存扣减操作需要锁行,即同一时刻仅有一个请求获得行锁,进而多个请求将按顺序以串行方式对库存进行扣减,最终将库存扣减为负数并抢购成功,从而出现库存多扣即超卖现象;二是秒杀库存存储于key-value(键-值)的缓存Redis,增加库存扣减更新后的判断逻辑,若用户扣减存库成功但用户信息插入订单数据库失败,则会回退库存,此时库存增加1后仍为负数,如若下个请求进来时判断库存数量小于0,则抢购失败,即出现了少卖现象;三是根据库存数量生成相应个数的token(令牌),将库存数量扣减转换成为token扣减,由于redis的并发性并不高,不能精准衡量用户秒杀抢购的优先级,而且这种方案流量过大,造成数据库会有过大压力而出现库存查询和订单保存报错超时,并且该方案只适用限购的情形(即一个账号在一次秒杀活动中只能下一单)。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有方案不能精准衡量用户秒杀抢购的优先级,存在库存少扣或多扣问题,流量过大,造成数据库会有过大压力而出现库存查询和订单保存报错超时,并且只适用限购的情形。
发明内容
有鉴于此,本发明实施例提供一种库存扣减方法和装置,能够精准衡量用户请求的优先级,并以极低消耗取得各用户请求的优先级,解决极高并发大流量(几十亿)的用户抢购场景下的库存少扣或多扣问题,实现了高并发请求的异步解耦,并避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,且对于限购或者不限购的情形均适用。
为实现上述目的,根据本发明实施例的一个方面,提供了一种库存扣减方法。
一种库存扣减方法,包括:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
可选地,一交易请求对应的时间差为该交易请求的接收时间与所述预设起始时间的差值,且所述差值为纳秒数。
可选地,根据各交易请求和所述各交易请求对应的时间差,生成值对象序列的步骤,包括:选出对应的时间差小于或等于预设阈值的交易请求,交易请求包括交易对象标识;将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;读取缓存的各值对象,将所述缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司,未经北京京东尚科信息技术有限公司;北京京东世纪贸易有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810599888.3/2.html,转载请声明来源钻瓜专利网。