CN110599277A - 一种库存扣减方法和装置 - Google Patents
一种库存扣减方法和装置 Download PDFInfo
- Publication number
- CN110599277A CN110599277A CN201810599888.3A CN201810599888A CN110599277A CN 110599277 A CN110599277 A CN 110599277A CN 201810599888 A CN201810599888 A CN 201810599888A CN 110599277 A CN110599277 A CN 110599277A
- Authority
- CN
- China
- Prior art keywords
- value
- value object
- transaction
- transaction request
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 47
- 238000012163 sequencing technique Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 4
- 230000002147 killing effect Effects 0.000 description 67
- 238000010586 diagram Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000009467 reduction Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- DGMKFQYCZXERLX-UHFFFAOYSA-N proglumide Chemical compound CCCN(CCC)C(=O)C(CCC(O)=O)NC(=O)C1=CC=CC=C1 DGMKFQYCZXERLX-UHFFFAOYSA-N 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000009849 deactivation Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0605—Supply or demand aggregation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
- G06Q30/0601—Electronic shopping [e-shopping]
- G06Q30/0607—Regulated
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种库存扣减方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和各交易请求对应的时间差,生成值对象序列;遍历值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象库存。该实施方式能精准衡量用户请求的优先级,以极低消耗取得各用户请求的优先级,解决极高并发大流量的用户抢购场景下库存少扣或多扣问题,实现了高并发请求的异步解耦,避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,对于限购或者不限购的情形均适用。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种库存扣减方法和装置。
背景技术
秒杀抢购促销活动日益成为电商公司吸引用户注册及提升用户活跃度的重要手段。秒杀活动开始前,根据商品ID(即skuID)通过运营后台创建一个秒杀促销活动(一个秒杀促销活动对应一个促销Id),包括秒杀开始时间和结束时间、秒杀价格、秒杀库存等信息。在这种超海量并发请求的场景中,商品库存是否精确扣减是衡量秒杀***是否可靠运行的关键指标。
现有的库存扣减方案,一是秒杀库存存储于关系型数据库,在高并发请求下,数据库性能将急剧下降甚至出现异常,导致查询及更新库存失败,由于库存扣减操作需要锁行,即同一时刻仅有一个请求获得行锁,进而多个请求将按顺序以串行方式对库存进行扣减,最终将库存扣减为负数并抢购成功,从而出现库存多扣即超卖现象;二是秒杀库存存储于key-value(键-值)的缓存Redis,增加库存扣减更新后的判断逻辑,若用户扣减存库成功但用户信息***订单数据库失败,则会回退库存,此时库存增加1后仍为负数,如若下个请求进来时判断库存数量小于0,则抢购失败,即出现了少卖现象;三是根据库存数量生成相应个数的token(令牌),将库存数量扣减转换成为token扣减,由于redis的并发性并不高,不能精准衡量用户秒杀抢购的优先级,而且这种方案流量过大,造成数据库会有过大压力而出现库存查询和订单保存报错超时,并且该方案只适用限购的情形(即一个账号在一次秒杀活动中只能下一单)。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有方案不能精准衡量用户秒杀抢购的优先级,存在库存少扣或多扣问题,流量过大,造成数据库会有过大压力而出现库存查询和订单保存报错超时,并且只适用限购的情形。
发明内容
有鉴于此,本发明实施例提供一种库存扣减方法和装置,能够精准衡量用户请求的优先级,并以极低消耗取得各用户请求的优先级,解决极高并发大流量(几十亿)的用户抢购场景下的库存少扣或多扣问题,实现了高并发请求的异步解耦,并避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,且对于限购或者不限购的情形均适用。
为实现上述目的,根据本发明实施例的一个方面,提供了一种库存扣减方法。
一种库存扣减方法,包括:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
可选地,一交易请求对应的时间差为该交易请求的接收时间与所述预设起始时间的差值,且所述差值为纳秒数。
可选地,根据各交易请求和所述各交易请求对应的时间差,生成值对象序列的步骤,包括:选出对应的时间差小于或等于预设阈值的交易请求,交易请求包括交易对象标识;将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;读取缓存的各值对象,将所述缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
可选地,组装得到的各值对象缓存于分布式缓存集群。
可选地,利用数组和线性链表生成并存放所述值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照所述缓存时间的先后顺序存放在线性链表中。
可选地,如果一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试所述交易信息生成操作,直到生成该值对象的交易信息后,扣减所述交易对象的库存;否则,继续遍历所述值对象序列的其他值对象。
可选地,如果交易对象的当前库存大于预设下限值,在生成该值对象对应的交易信息的步骤之前,包括:根据保存的交易信息记录,确定该值对象对应的交易信息未被生成;如果所述值对象对应的交易信息已经被生成,则将所述值对象中的交易请求设置为不符合所述预设权限。
可选地,所述预设起始时间按照预设标准时间设置,根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差的步骤之前,包括:按照所述预设标准时间,校准用于接收各交易请求的服务器的时钟时间。
根据本发明实施例的另一方面,提供了一种库存扣减装置。
一种库存扣减装置,包括:时间差确定模块,用于根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;值对象序列生成模块,用于根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;库存扣减模块,用于遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
可选地,通过所述时间差确定模块确定的一交易请求对应的时间差,为该交易请求的接收时间与所述预设起始时间的差值,且所述差值为纳秒数。
可选地,所述值对象序列生成模块还用于:选出对应的时间差小于或等于预设阈值的交易请求;将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;读取缓存的各值对象,将所述缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
可选地,所述值对象序列生成模块包括缓存子模块,用于:将所述组装得到的各值对象缓存于分布式缓存集群。
可选地,还包括保存模块,用于:利用数组和线性链表生成并存放所述值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照所述缓存时间的先后顺序存放在线性链表中。
可选地,还包括检查模块,用于:如果一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试通过所述库存扣减模块生成交易信息的操作,直到生成该值对象的交易信息后,扣减所述交易对象的库存;否则,继续遍历所述值对象序列的其他值对象。
可选地,还包括校验模块,用于:如果交易对象的当前库存大于预设下限值,在所述库存扣减模块生成该值对象对应的交易信息之前,根据保存的交易信息记录,确定该值对象对应的交易信息未被生成;以及,权限设置模块,用于:如果所述值对象对应的交易信息已经被生成,则:将所述值对象中的交易请求设置为不符合所述预设权限。
可选地,所述预设起始时间按照预设标准时间设置,所述装置还包括校准模块,用于:按照所述预设标准时间,校准用于接收各交易请求的服务器的时钟时间。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明提供的库存扣减方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的库存扣减方法。
上述发明中的一个实施例具有如下优点或有益效果:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和所述各交易请求对应的时间差,生成值对象序列;遍历值对象序列的各值对象,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象的库存。其中,利用数组和线性链表生成并存放值对象序列。本发明能够精准衡量用户请求的优先级,并以极低消耗取得各用户请求的优先级。解决极高并发大流量(几十亿)的用户抢购场景下的库存少扣或多扣问题,实现了高并发请求的异步解耦,并避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,并且,本发明对于限购或者不限购的情形均适用。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明一个实施例的库存扣减方法的主要步骤示意图;
图2是根据本发明一个实施例的库存扣减方法的优选流程示意图;
图3是根据本发明另一实施例的库存扣减方法的主要步骤示意图;
图4是根据本发明一个实施例的库存扣减装置的主要模块示意图;
图5是根据本发明另一实施例的库存扣减装置的主要模块示意图;
图6是本发明实施例可以应用于其中的示例性***架构图;
图7是适于用来实现本发明实施例的服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例的库存扣减方法可以用于极高并发、大流量(几十亿)的用户抢购场景,例如电商的秒杀抢购活动、火车票抢购(例如春运)等场景,其中,秒杀抢购活动抢购的对象可以是商品或服务,图1所示的实施例以秒杀抢购商品为例来介绍本发明实施例的库存扣减方法。
图1是根据本发明的一个实施例的库存扣减方法的主要步骤示意图。
如图1所示,本发明实施例的库存扣减方法可主要包括如下的步骤S101至步骤S103。
步骤S101:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差。
其中,交易请求可以包括交易对象标识和用户信息。
交易请求例如用户向web服务器提交的秒杀某一商品的请求(简称秒杀请求)。
交易对象例如为被秒杀的商品,交易对象标识例如为秒杀促销ID(即promoId),针对某一商品的秒杀促销活动(简称秒杀活动)对应一个秒杀促销ID,根据秒杀促销ID可以查询到该商品的当前库存(即当前库存量)和该商品的SKU ID(库存量单位标识)。用户信息可以提交秒杀请求的用户的userPin(用户识别码)信息。
预设起始时间可以为预先设置的秒杀活动的开始时间,预设起始时间可以按照预设标准时间设置,预设标准时间可以是对应某一时区或地区的标准时间,例如北京标准时间。当达到预设起始时间时,各服务器(例如web服务器)开始接受交易请求。由于接收交易请求的web服务器通常为多个,例如100个,为了保证各web服务器上秒杀活动开始时间的一致性,在步骤S101之前,需要将用于接收交易请求的各web服务器的时间通过校准工具进行校准,即,按照上述预设标准时间(例如北京标准时间),校准用于接收各交易请求的服务器的时钟时间,以保证每个web服务器的时间相同,即,将各web服务器的时钟时间都校准到北京标准时间。
任一交易请求对应的时间差为该交易请求的接收时间与所述预设起始时间的差值,且该差值可以为纳秒数。例如,某一秒杀请求对应的时间差可以为web服务器接收该秒杀请求的时间,距离秒杀活动开始时间的纳秒数。时间差还可以取其他时间单位,例如微秒,然而微妙不能很好地区分特别海量的数据,因此不能适用于国家级的秒杀活动场景。纳秒目前为可以识别的最小时间单位,本领域技术人员可以理解的是,如果计算机可以识别比纳秒更小的时间单位,则时间差也可以取更小的时间单位。
当秒杀活动开始后,各web服务器分别计算接收到的秒杀请求的接收时间(System.nanoTime())距秒杀活动开始时间(start)的纳秒数(System.nanoTime()-start),各web服务器确定出秒杀请求对应的时间差之后,并在各秒杀请求所在的线程上标注上对应的时间差。
本发明实施例计算上述时间差的计算开销极小,对于海量并发请求的计算开销而言,几乎可以忽略不计。
步骤S102:根据各交易请求和各交易请求对应的时间差,生成值对象序列。
其中,值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差。
步骤S102具体可以包括:选出对应的时间差小于或等于预设阈值的交易请求;将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;读取缓存的各值对象,将缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
各值对象可缓存在分布式缓存集群,例如Redis(一种分布式的缓存开源软件)集群、MemCache(一种分布式的高速缓存***)集群等,由于Redis处理速度比较快,本发明实施例采用Redis集群来实现。Redis集群中的各值对象的优先级与各值对象的缓存时间相关,先被缓存的值对象的优先级高于后缓存的值对象的优先级。由于在web服务器中处理时间或网络的差异,对应的时间差值相同的值对象在Redis集群中的缓存时间可能不同。
可以利用数组和线性链表生成并存放值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照缓存时间的先后顺序存放在线性链表中。由于数组的性能比哈希表高20倍,而且本发明的结链表(即线性链表)和哈希表结链表是不同的,哈希表结链表有大量的复制和反转,而本发明的线性链表为纯线性的,不存在任何复制和反转,因此确定优先级的计算基本上是秒杀,从而可以极低消耗地取得所有用户的秒杀请求的优先级。
例如,在某一秒杀活动中,预设阈值设置为20亿纳秒(20亿纳秒即为2秒),本发明实施例针对海量并发请求的秒杀活动场景,根据设置的预设阈值,秒杀活动开始2秒后提交秒杀请求的用户则不能抢到商品,因此,只选出自秒杀活动开始后2秒内提交的秒杀请求,而将超过2秒提交的秒杀请求全部丢弃,从而极大地减小web服务器的负担。
将选出的秒杀请求分别与各自对应的纳秒数(时间差)组装为值对象,秒杀请求包括promoId、userPin为例,相应地,值对象包括promoId、纳秒数、userPin。可以通过LPUSH指令将各值对象缓存于Redis集群,可以通过一个内存较大(例如64G)的定时器服务器,使用RPOP指令(一种取数据命令)从Redis集群取出各值对象,然后根据纳秒数作为数组下标将各值对象放入一个数组,相同纳秒数的值对象按照缓存时间的先后顺序存放在线性链表中,该数组和线性链表位于定时器服务器的内存中。纳秒数的最大值小于或等于20亿,即小于或等于int32边界(一个数组的存储边界)。数组为最强性能的内存容器,比哈希表快20倍,比B树快100倍,数组下标为int32,即20亿,恰好是2秒钟的纳秒数。链表是一个内存集合名,链表中位于前面的节点包含位于后面的节点的内存地址信息。一个20亿的数组约耗30G内存。由于纳秒数已经精确到一秒钟的十亿分之一,因此,按照对应的纳秒数对各秒杀请求排序可以足够精确地确定秒杀请求的优先级,而纳秒数相同、缓存时间不同的多个秒杀请求,按照缓存时间先后顺序确定优先级给秒杀结果带来的影响,对于海量秒杀请求而言是可以接受的。
需要说明的是,对于通常的秒杀活动场景,预设阈值设置为20亿纳秒(即2秒)已经足以满足需求,本发明实施例的预设阈值也可以设置为大于20亿纳秒的其他数值,由于大于20亿时超过int32边界,则可以通过多个数组来存储各值对象,数组的数量取决于预设阈值的具体数值。
对于选出的秒杀请求对应的用户,可以展示给用户一个等待画面(等待执行完步骤S103之后返回给用户的输出结果),等待页面中可以输出例如“正在抢购中,请耐心等待”的提示消息,让用户感到轻松舒适。本发明实施例的用户等待时间不长于现有方案,而能承受的请求并发量确大大高于现有方案,对秒杀***的冲击力远远小于现有方案。
对于被丢弃的秒杀请求对应的用户,可以通过页面输出例如“对不起,您为抢到该宝贝”的提示消息。
现有方案中,由于对于海量请求(几十亿),Redis的并发性受到挑战,虽然Redis的内存可以承受这一压力,但是Redis为网络服务器,其一秒钟最大处理能力是八万条,且为批量提交,而不是离散的,因此,现有方案面临海量请求时无法保证用户最先提交的秒杀请求优先得到锁,秒杀请求的优先级只能取决于服务器间的随机网络质量,从而不能精准衡量秒杀请求的优先级。
而根据本发明实施例,通过步骤S101以纳秒数确定各秒杀请求对应的时间差,通过步骤S102,根据不同纳秒数的秒杀请求组装生成值对象,并根据纳秒数作为数组下标将各值对象放入一个数组,使得对应不同纳秒数的秒杀请求可以根据纳秒数确定优先级,对应相同纳秒数的秒杀请求通过缓存时间确定优先级,从而能精准衡量各秒杀请求的优先级,且通过分布式计算秒杀请求的优先级,极大地减小分布式缓存集群(如Redis)的负荷,连接Redis集群失败或连接超时的请求还可以重发。
步骤S103:遍历值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象的库存。
预设下限值可以根据需要设定,通常可设置为零。交易信息例如为订单信息。
遍历值对象序列的各值对象,即遍历数组,并对于相同数组下标遍历链表。如果数组有多个,则逐个数组进行遍历。
例如,全国5000万个秒杀请求,秒杀5个0元X品牌手机,其中,最早提交的三个秒杀请求对应的时间差为2纳秒(即秒杀活动开始后2纳秒时,该请求被web服务器接收),对应的时间差为3纳秒的有5个秒杀请求,那么成功抢购到该X品牌手机的五个用户分别对应:数组下标为2的两个值对象(其中包括promId和userPin)和数组下标为3的链表的前三个值对象(其中包括promId和userPin),该五个值对象中秒杀请求对应的用户即为成功抢购到该X品牌手机的五个用户。
其中,当遍历到数组的第一个值对象时(对应纳秒数为2纳秒),根据promId查到X品牌手机的当前库存为5(大于预设下限值0),SKU ID=2873676823,则下单以生成订单信息(参数为userPin=张三,SKU ID=2873676823),如下单成功(订单信息生成成功)则扣减该X品牌手机的库存,即:5-1=4。以此类推,只要该X品牌手机的库存大于0,则生成订单信息。直到遍历到第6个值对象(此处假设遍历到前5个值对象时都下单成功)时,该X品牌手机的库存等于0,则不再生成订单信息,从该第6个值对象开始,后续值对象中秒杀请求对应的用户则没有抢购到该X品牌手机,对于这部分用户,返回的输出结果为抢购失败的提示消息,例如“对不起,您未抢到该宝贝”。
如果某一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试上述交易信息生成操作,直到生成该值对象的交易信息后,扣减交易对象的库存;否则,继续遍历值对象序列的其他值对象。预设权限,例如下单权限可以预先设置,例如设置风险用户提交的秒杀请求不具有下单权限,对于不具有下单权限的秒杀请求,生成订单信息失败。
上述秒杀5个0元X品牌手机的示例中,如果遍历到第5个值对象时,下单失败(即订单信息生成失败),则检查该值对象中秒杀请求是否符合下单权限。例如,可以检查秒杀请求中userPin是否为风控***黑名单中的userPin,如果是,说明该userPin的用户为风险用户,则遍历第6个值对象,由于该手机当前库存为1,那么,如果对于第6个值对象下单成功,则第6个值对象中秒杀请求的用户可以成功抢购到该手机。如果第5个值对象中秒杀请求的userPin对应的用户不是风险用户,则不断重试下单操作,直到成功生成订单信息。对于成功抢购到X品牌手机的用户,则返回的输出结果为下单成功的提示消息,并输出生成的订单信息。
本发明实施例的上述库存扣减方法,适用于不限购的秒杀情形,即允许用户可以多开自己的账户以购买多个商品,例如秒杀活动开始后,通过同一userPin在两个不同设备上提交秒杀请求,如果均能抢购成功,则userPin对应的用户可以抢购到两个商品(需要分别下单,每单抢购到一个商品)。上述库存扣减方法的优选流程具体如图2所示。
根据图2,上述库存扣减方法的优选流程可以包括步骤S201至步骤S206。
步骤S201:web服务器接收各用户提交的交易请求。
当达到预设起始时间时,web服务器开始接受各用户提交的交易请求,预设起始时间可以按照预设标准时间设置,预设标准时间可以是对应某一时区或地区的标准时间,例如北京标准时间。接收交易请求的web服务器通常为多个,为保证每个web服务器的时钟时间相同,在预设起始时间到来之前,需要按照上述预设标准时间(例如北京标准时间),校准用于接收各交易请求的服务器的时钟时间。
步骤S202:web服务器根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差。
步骤S203:web服务器选出对应的时间差小于或等于预设阈值的交易请求,并将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象。
步骤S204:web服务器将组装得到的各值对象缓存在分布式缓存集群。
步骤S205:通过定时器服务器从分布式缓存集群读取缓存的各值对象,将缓存的各值对象按照时间差从小到大排序存放在数组中,且对于相同时间差的多个值对象按照缓存时间的先后顺序存放在线性链表中,以生成值对象序列。
由于web服务器将组装得到的各值对象缓存在分布式缓存集群,再通过定时器服务器从分布式缓存集群读取缓存的各值对象,将缓存的各值对象按照时间差从小到大排序存放在数组中,以及将对应相同时间差的多个值对象按照缓存时间的先后顺序存放在线性链表中,以得到值对象序列,使得本发明实施例区别于现有技术,无需在Redis中加锁,从而实现了异步解耦。
步骤S206:遍历值对象序列,对于值对象序列中的每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象的库存。
其中,如果某一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试上述交易信息生成操作,直到生成该值对象的交易信息后,扣减交易对象的库存;否则,继续遍历值对象序列的其他值对象。
此外,本发明实施例还适用于限购的情形,即一个userPin最多抢购到一个商品,结合上例,在限购的情形下,除了可以预先设置上述的预设权限外,还可以在秒杀过程中动态设置该预设权限,例如动态设置下单权限。具体地,如果X品牌手机的当前库存大于零,在生成某一值对象对应的订单信息之前,先校验数据库中的订单信息记录,以确定该值对象对应的订单信息是否已被生成,具体可以校验数据库记录的下单成功的userPin中是否有该值对象中userPin,若有,表示该值对象对应的订单信息已被生成,说明该userPin对应的用户已经抢购到该商品,则将该userPin对应的秒杀请求设置为不符合下单权限,从而该值对象对应的订单信息生成失败。这样,在后续的检查该值对象中秒杀请求是否符合预设权限时,由于该秒杀请求不符合下单权限,则继续遍历值对象序列的其他值对象。
本发明实施例的火车票抢购应用场景通常属于上述限购的情形,以春运抢购火车票的场景为例,交易请求例如用户向web服务器提交的针对某一车次的火车票的购买请求,交易对象例如为该车次的车票,交易对象标识例如为该车次的编号,交易对象的当前库存即待售的该车次的车票数量,用户信息可以是用户的身份信息,例如身份证号码,也可以是与身份信息一一对应的其他预设编码信息。以用户信息为身份证号码为例,通常每一身份证号码只限于抢购某一车次的一张车票。
在这一应用场景下,本发明的另一实施例的库存扣减方法的主要步骤示意图如图3所示。
如图3所示,本发明的另一实施例的库存扣减方法主要包括步骤S301至步骤S304。
其中,步骤S301与步骤S101相同、步骤S302与步骤S102相同,由于上文已对步骤S101、步骤S102进行了详细介绍,此处步骤S301和步骤S302的具体内容不再赘述。
步骤S303:遍历值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,则根据保存的交易信息记录,确定该值对象对应的交易信息未被生成。
如果保存的交易信息记录的各用户信息中没有该值对象中的用户信息,则该值对象对应的交易信息未被生成,否则,该交易信息已经被生成。
如果该值对象对应的交易信息已经被生成,则将该秒杀请求设置为不符合预设权限。
步骤S304:生成该值对象对应的交易信息,然后扣减交易对象的库存。
如果某一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试上述交易信息生成操作,直到生成该值对象的交易信息后,扣减交易对象的库存;否则,继续遍历值对象序列的其他值对象。
本发明实施例在各交易请求所在的线程上标注上对应的时间差,并利用时间差确定各交易请求的优先级,选出对应的时间差小于或等于预设阈值的交易请求,并将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,将组装得到的各值对象缓存在分布式缓存集群,然后从分布式缓存集群读取缓存的各值对象,并将缓存的各值对象按照时间差从小到大排序存放在数组中,且对于相同时间差的多个值对象按照缓存时间的先后顺序存放在线性链表中,以生成值对象序列,遍历值对象序列,如果交易对象的当前库存大于预设下限值,生成值对象对应的交易信息,然后扣减交易对象的库存。从而实现了异步解耦,由于采用了异步解耦和分布式计算交易请求的优先级,造成再海量的交易请求,也可以轻松应对,不会对数据库造成巨大压力,对Redis集群的压力也会小很多,由于丢弃了对应的时间差大于预设阈值的交易请求,例如预设阈值取20亿纳秒(等于2秒),则Redis只承受两秒钟的压力,而且基于分布式计算,用户的优先级早已确定,无需Redis的网络异常优秀即可轻松处理海量请求,且避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,用户也有更加舒适的体验。
图4是根据本发明一个实施例的库存扣减装置的主要模块示意图。
如图4所示,本发明一个实施例的库存扣减装置400主要包括:时间差确定模块401、值对象序列生成模块402、库存扣减模块403。
时间差确定模块401用于根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差,每一交易请求包括交易对象标识。
其中,通过时间差确定模块401确定的一交易请求对应的时间差,为该交易请求的接收时间与预设起始时间的差值,且该差值为纳秒数。
预设起始时间可按照预设标准时间设置,库存扣减装置400还可以包括校准模块,校准模块用于:按照预设标准时间校准用于接收各交易请求的服务器的时钟时间。用于接收各交易请求的服务器可为web服务器。预设标准时间例如北京标准时间。
值对象序列生成模块402用于根据各交易请求和各交易请求对应的时间差,生成值对象序列,值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差。
值对象序列生成模块402具体可以用于:选出对应的时间差小于或等于预设阈值的交易请求;将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;读取缓存的各值对象,将缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
值对象序列生成模块402可以包括缓存子模块,用于:将组装得到的各值对象缓存于分布式缓存集群。
库存扣减模块403用于遍历值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象的库存。
库存扣减装置400还可以包括保存模块,用于:利用数组和线性链表生成并存放值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照缓存时间的先后顺序存放在线性链表中。
库存扣减装置400还可以包括检查模块,用于:如果一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,若是,则重试通过库存扣减模块生成交易信息的操作,直到生成该值对象的交易信息后,扣减交易对象的库存;否则,继续遍历值对象序列的其他值对象。
本实施例的库存扣减装置400,主要适用于不限购的应用场景,即允许用户可以多开自己的账户,通过分别下单抢购以购买多个商品或服务。本发明实施例还适用于限购的情形,如图5所示。
图5是根据本发明另一实施例的库存扣减装置的主要模块示意图。
如图5所示,库存扣减装置500主要包括时间差确定模块501、值对象序列生成模块502、库存扣减模块503、校验模块504、权限设置模块505。
其中,时间差确定模块501与时间差确定模块401的功能相同,值对象序列生成模块502与值对象序列生成模块402的功能相同,库存扣减模块503与库存扣减模块403的功能相同。由于上文已对时间差确定模块401、值对象序列生成模块402、库存扣减模块403的具体功能进行了详细介绍,此处对时间差确定模块501、值对象序列生成模块502、库存扣减模块503不再赘述。
校验模块504用于:如果交易对象的当前库存大于预设下限值,则在库存扣减模块503生成该值对象对应的交易信息之前,根据保存的交易信息记录,确定该值对象对应的交易信息未被生成。
权限设置模块505用于:如果该值对象对应的交易信息已经被生成,则:将该值对象中的交易请求设置为不符合预设权限,例如下单权限。
本发明实施例的库存扣减装置可以设置于秒杀***、车票抢购***等高并发的抢购***中。例如,库存扣减装置400可以设置于电商秒杀***,电商秒杀***可以设置为在秒杀活动中限购或者不限购,库存扣减装置500可以设置于火车票抢购***,火车票抢购通常设置为限购的情形,例如限制每个用户信息(例如身份证号码)只购买同一车次的一张车票。
另外,在本发明实施例中所述库存扣减装置的具体实施内容,在上面所述库存扣减方法中已经详细说明了,故在此重复内容不再说明。
图6示出了可以应用本发明实施例的库存扣减方法或库存扣减装置的示例性***架构600。
如图6所示,***架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的库存扣减方法一般由服务器605执行,相应地,库存扣减装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本申请实施例的服务器的计算机***700的结构示意图。图7示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考主要步骤示意图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤示意图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的主要步骤示意图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,主要步骤示意图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或主要步骤示意图中的每个方框、以及框图或主要步骤示意图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括时间差确定模块401、值对象序列生成模块402、库存扣减模块403。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,时间差确定模块401还可以被描述为“用于根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
根据本发明实施例的技术方案,根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;根据各交易请求和所述各交易请求对应的时间差,生成值对象序列;遍历值对象序列的各值对象,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减交易对象的库存。其中,利用数组和线性链表生成并存放值对象序列。本发明能够精准衡量用户请求的优先级,并以极低消耗取得各用户请求的优先级。解决极高并发大流量(几十亿)的用户抢购场景下的库存少扣或多扣问题,实现了高并发请求的异步解耦,并避免数据库压力过大而出现的库存查询和订单保存报错超时等现象,并且,本发明对于限购或者不限购的情形均适用。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (18)
1.一种库存扣减方法,其特征在于,包括:
根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;
根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;
遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
2.根据权利要求1所述的方法,其特征在于,一交易请求对应的时间差为该交易请求的接收时间与所述预设起始时间的差值,且所述差值为纳秒数。
3.根据权利要求1所述的方法,其特征在于,根据各交易请求和所述各交易请求对应的时间差,生成值对象序列的步骤,包括:
选出对应的时间差小于或等于预设阈值的交易请求;
将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;
读取缓存的各值对象,将所述缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
4.根据权利要求3所述的方法,其特征在于,组装得到的各值对象缓存于分布式缓存集群。
5.根据权利要求3所述的方法,其特征在于,利用数组和线性链表生成并存放所述值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照所述缓存时间的先后顺序存放在线性链表中。
6.根据权利要求1所述的方法,其特征在于,如果一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,
若是,则重试所述交易信息生成操作,直到生成该值对象的交易信息后,扣减所述交易对象的库存;
否则,继续遍历所述值对象序列的其他值对象。
7.根据权利要求6所述的方法,其特征在于,如果交易对象的当前库存大于预设下限值,在生成该值对象对应的交易信息的步骤之前,包括:
根据保存的交易信息记录,确定该值对象对应的交易信息未被生成;
如果所述值对象对应的交易信息已经被生成,则将所述值对象中的交易请求设置为不符合所述预设权限。
8.根据权利要求1所述的方法,其特征在于,所述预设起始时间按照预设标准时间设置,
根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差的步骤之前,包括:
按照所述预设标准时间,校准用于接收各交易请求的服务器的时钟时间。
9.一种库存扣减装置,其特征在于,包括:
时间差确定模块,用于根据预设起始时间和各交易请求的接收时间,确定各交易请求对应的时间差;
值对象序列生成模块,用于根据各交易请求和所述各交易请求对应的时间差,生成值对象序列,所述值对象序列中每个值对象包括一交易请求和该交易请求对应的时间差;
库存扣减模块,用于遍历所述值对象序列的各值对象,其中,对于每个值对象,如果交易对象的当前库存大于预设下限值,生成该值对象对应的交易信息,然后扣减所述交易对象的库存。
10.根据权利要求9所述的装置,其特征在于,通过所述时间差确定模块确定的一交易请求对应的时间差,为该交易请求的接收时间与所述预设起始时间的差值,且所述差值为纳秒数。
11.根据权利要求9所述的装置,其特征在于,所述值对象序列生成模块还用于:
选出对应的时间差小于或等于预设阈值的交易请求;
将每一选出的交易请求和该选出的交易请求对应的时间差组装为一个值对象,缓存组装得到的各值对象;
读取缓存的各值对象,将所述缓存的各值对象按照时间差从小到大排序,且对于相同时间差的多个值对象按照缓存时间的先后顺序排序,以生成值对象序列。
12.根据权利要求11所述的装置,其特征在于,所述值对象序列生成模块包括缓存子模块,用于:
将所述组装得到的各值对象缓存于分布式缓存集群。
13.根据权利要求11所述的装置,其特征在于,还包括保存模块,用于:
利用数组和线性链表生成并存放所述值对象序列,其中,每个值对象中的时间差为该值对象的数组下标,相同数组下标的多个值对象按照所述缓存时间的先后顺序存放在线性链表中。
14.根据权利要求9所述的装置,其特征在于,还包括检查模块,用于:
如果一值对象对应的交易信息生成失败,检查该值对象中的交易请求符合预设权限,
若是,则重试通过所述库存扣减模块生成交易信息的操作,直到生成该值对象的交易信息后,扣减所述交易对象的库存;
否则,继续遍历所述值对象序列的其他值对象。
15.根据权利要求14所述的装置,其特征在于,还包括校验模块,用于:
如果交易对象的当前库存大于预设下限值,在所述库存扣减模块生成该值对象对应的交易信息之前,根据保存的交易信息记录,确定该值对象对应的交易信息未被生成;
以及,权限设置模块,用于:
如果所述值对象对应的交易信息已经被生成,则:将所述值对象中的交易请求设置为不符合所述预设权限。
16.根据权利要求9所述的装置,其特征在于,所述预设起始时间按照预设标准时间设置,所述装置还包括校准模块,用于:
按照所述预设标准时间,校准用于接收各交易请求的服务器的时钟时间。
17.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
18.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810599888.3A CN110599277A (zh) | 2018-06-12 | 2018-06-12 | 一种库存扣减方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810599888.3A CN110599277A (zh) | 2018-06-12 | 2018-06-12 | 一种库存扣减方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110599277A true CN110599277A (zh) | 2019-12-20 |
Family
ID=68849327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810599888.3A Pending CN110599277A (zh) | 2018-06-12 | 2018-06-12 | 一种库存扣减方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110599277A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111582780A (zh) * | 2020-04-20 | 2020-08-25 | 重庆锐云科技有限公司 | 商品购买等待通道构建方法、装置、服务器及存储介质 |
CN112104671A (zh) * | 2020-11-12 | 2020-12-18 | 深圳壹账通智能科技有限公司 | 接口授权监控方法、装置、计算机设备和存储介质 |
CN112416314A (zh) * | 2020-01-21 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 库存动态管理方法及*** |
CN113077220A (zh) * | 2021-04-16 | 2021-07-06 | 北京京东拓先科技有限公司 | 用户请求的处理方法和装置 |
CN113220700A (zh) * | 2020-02-04 | 2021-08-06 | 北京京东振世信息技术有限公司 | 一种实现动态库存处理方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001025942A (ja) * | 1999-07-14 | 2001-01-30 | Sumitomo Metal Ind Ltd | 生産計画調整方法、生産計画調整システム、及び記録媒体 |
JP2002157406A (ja) * | 2000-11-17 | 2002-05-31 | Sato Corp | 商品販売システム及び商品販売方法 |
US20020069082A1 (en) * | 2000-12-02 | 2002-06-06 | Lg Electronics Inc. | Electronic commerce system and operating method thereof |
CN1453720A (zh) * | 2002-04-25 | 2003-11-05 | 株式会社日立制作所 | 库存计划方法 |
CN103426072A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种高并发竞争库存的订单处理***及其处理方法 |
CN105096122A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种分片式交易匹配方法和装置 |
CN106204232A (zh) * | 2016-07-18 | 2016-12-07 | 苏州华车网络科技有限公司 | 一种处理高并发交互数据请求的***和方法 |
CN106709774A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 商品对象交易信息处理方法及装置 |
CN107871221A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 用于获取可销售库存数量的方法和装置 |
CN108133399A (zh) * | 2016-11-30 | 2018-06-08 | 北京京东尚科信息技术有限公司 | 高并发快响应的秒杀库存精准扣减的方法、装置及*** |
-
2018
- 2018-06-12 CN CN201810599888.3A patent/CN110599277A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001025942A (ja) * | 1999-07-14 | 2001-01-30 | Sumitomo Metal Ind Ltd | 生産計画調整方法、生産計画調整システム、及び記録媒体 |
JP2002157406A (ja) * | 2000-11-17 | 2002-05-31 | Sato Corp | 商品販売システム及び商品販売方法 |
US20020069082A1 (en) * | 2000-12-02 | 2002-06-06 | Lg Electronics Inc. | Electronic commerce system and operating method thereof |
CN1453720A (zh) * | 2002-04-25 | 2003-11-05 | 株式会社日立制作所 | 库存计划方法 |
CN103426072A (zh) * | 2013-07-16 | 2013-12-04 | 无限极(中国)有限公司 | 一种高并发竞争库存的订单处理***及其处理方法 |
CN105096122A (zh) * | 2014-04-16 | 2015-11-25 | 阿里巴巴集团控股有限公司 | 一种分片式交易匹配方法和装置 |
CN106709774A (zh) * | 2015-11-12 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 商品对象交易信息处理方法及装置 |
CN106204232A (zh) * | 2016-07-18 | 2016-12-07 | 苏州华车网络科技有限公司 | 一种处理高并发交互数据请求的***和方法 |
CN107871221A (zh) * | 2016-09-28 | 2018-04-03 | 北京京东尚科信息技术有限公司 | 用于获取可销售库存数量的方法和装置 |
CN108133399A (zh) * | 2016-11-30 | 2018-06-08 | 北京京东尚科信息技术有限公司 | 高并发快响应的秒杀库存精准扣减的方法、装置及*** |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416314A (zh) * | 2020-01-21 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | 库存动态管理方法及*** |
CN113220700A (zh) * | 2020-02-04 | 2021-08-06 | 北京京东振世信息技术有限公司 | 一种实现动态库存处理方法和装置 |
CN113220700B (zh) * | 2020-02-04 | 2023-11-03 | 北京京东振世信息技术有限公司 | 一种实现动态库存处理方法和装置 |
CN111582780A (zh) * | 2020-04-20 | 2020-08-25 | 重庆锐云科技有限公司 | 商品购买等待通道构建方法、装置、服务器及存储介质 |
CN111582780B (zh) * | 2020-04-20 | 2023-06-09 | 重庆锐云科技有限公司 | 商品购买等待通道构建方法、装置、服务器及存储介质 |
CN112104671A (zh) * | 2020-11-12 | 2020-12-18 | 深圳壹账通智能科技有限公司 | 接口授权监控方法、装置、计算机设备和存储介质 |
CN113077220A (zh) * | 2021-04-16 | 2021-07-06 | 北京京东拓先科技有限公司 | 用户请求的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110599277A (zh) | 一种库存扣减方法和装置 | |
US10509779B2 (en) | Self-cleaning token vault | |
CN110866709B (zh) | 合并订单的方法和装置 | |
CN110728455B (zh) | 业务处理方法、业务处理装置、存储介质与电子设备 | |
CN106897905B (zh) | 用于推送信息的方法、装置及电子设备 | |
CN110473036B (zh) | 一种生成订单号的方法和装置 | |
CN110738436B (zh) | 一种确定可用库存的方法和装置 | |
CN111861745B (zh) | 一种业务风控方法和装置 | |
CN111930786B (zh) | 资源获取请求处理***、方法及装置 | |
CN115421922A (zh) | 一种分布式***的限流方法、装置、设备、介质及产品 | |
CN108874836B (zh) | 转移电子券的方法和装置 | |
CN112884181A (zh) | 额度信息处理方法和装置 | |
CN110223179A (zh) | 资金的数据处理方法、装置、***、介质 | |
CN113761565B (zh) | 数据脱敏方法和装置 | |
US10521841B2 (en) | Method and apparatus for integrating an e-commerce provider with third-party vendors | |
CN116263926A (zh) | 基于区块链的对账方法、装置和*** | |
CN113641633A (zh) | 文件处理方法、装置、电子设备、介质和计算机程序 | |
CN111415245A (zh) | 一种开户方法和装置 | |
CN112581179B (zh) | 电子券的生成方法和生成装置 | |
CN111291038B (zh) | 一种数据查询方法及装置 | |
CN112995244B (zh) | 一种签约代扣方法、资源访问方法及设备 | |
CN109934692B (zh) | 一种用于自动生成对冲凭证的方法和装置 | |
CN112488860B (zh) | 一种团单处理方法和*** | |
EP4358000A1 (en) | Digital currency-based payment method, platform, terminal, and payment system | |
CN109656519B (zh) | 一种业务数据自动化接入方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |