基于分片的库存管理方法以及装置
技术领域
本申请涉及数据处理技术领域,特别涉及一种基于分片的库存管理方法。本申请同时涉及一种基于分片的库存管理装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着互联网业务的不断发展,选择在网上购物的人群不断增加,这种情况下对于畅销商品,在高峰时段的下单数量会非常大,也意味着对数据库中畅销商品的库存操作十分频繁,非常考验数据库的性能。
目前,对于单台数据库支持的电商平台,有很多提高数据库性能的方法,例如:增加硬件性能,对需要高频查询的表建立索引,优化结构化查询语言(SQL,Structured QueryLanguage)等,这些方法都可以对数据库的性能有不同程度的提高。
但这些方法对于提高畅销商品的库存管理的效率却不够具有针对性,容易造成计算资源的浪费,而且随着业务的不断提升,库存的更新仍然会是数据库性能的瓶颈,影响用户在网站下单的效率。
发明内容
有鉴于此,本申请提供了一种基于分片的库存管理方法。本申请同时涉及一种基于分片的库存管理装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种基于分片的库存管理方法,包括:
获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
可选的,若所述判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片步骤的判断结果为存在,执行如下操作:
根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述对所述分片进行库存扣减后的剩余库存扣减数量是否等于0;
若是,所述对所述分片进行库存扣减的扣减结果为扣减成功;
若否,所述对所述分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示。
可选的,所述获取针对热点商品的库存进行扣减的库存扣减请求步骤执行之前,还包括:
根据商品的商品信息,确定所述商品中的所述热点商品;
在商品数据库读取所述热点商品的热点状态字段记录的热点状态信息;
判断所述热点状态信息是否为热点开启状态;
若是,执行所述获取针对热点商品的库存进行扣减的库存扣减请求步骤;
若否,更新所述热点状态信息为所述热点开启状态;
为所述热点商品的库存创建分片,并将所述热点商品的库存分配至所述分片。
可选的,所述为所述热点商品的库存创建分片,将所述热点商品的库存分配至所述分片,包括:
获取所述热点商品的库存数量;
根据所述热点商品的库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存增加数量;
将所述分片中的主分片的子库存数量增加所述期望库存增加数量。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量;
判断所述分片中的主分片的子库存数量是否大于或等于所述期望库存扣减数量;
若是,根据所述期望库存扣减数量,对所述主分片进行库存扣减;
若否,根据所述期望库存扣减数量,对所述主分片进行库存扣减,并按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量、查询所述热点商品的分片的子库存数量的查询子请求以及根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求;
基于所述查询子请求查询所述热点商品在商品数据库中分片的子库存数量以及所述分片对应的版本号;
判断所述热点商品在所述分片的子库存数量之和是否大于所述期望库存扣减数量;
若是,基于所述扣减子请求查询所述分片对应的扣减版本号;
判断所述版本号与所述扣减版本号是否一致;
若是,根据所述期望库存扣减数量,按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减;以及对所述次分片进行库存扣减后,对所述次分片的版本号加一;判断根据所述期望库存扣减数量对被扣减的次分片进行库存扣减后的剩余期望库存扣减数量是否为0;
若不为0,对所述分片中的主分片进行库存扣减;以及对所述主分片进行库存扣减后,对所述主分片的版本号加一。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,判断所述分片的实际数量是否小于所述预设最大分片数;
若小于所述预设最大分片数,根据所述预设最大分片数,为所述热点商品的库存创建新分片,并按照库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若否,判断所述分片的实际数量是否小于所述分片数量;
若小于所述分片数量,根据所述分片数量,为所述热点商品的库存创建分片,并按照所述库存迁移顺序,将所述分片的子库存数量迁移至所述新分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片的实际数量与所述分片数量的差值是否大于等于预设数值;
若是,根据所述分片数量,将所述分片按子库存数量从小到大的顺序,通过将至少一个分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述至少一个分片中的次分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片中的主分片的子库存数量是否小于最小分片库存;
若是,将所述分片中的次分片的子库存数量最大的次分片的子库存数量迁移到所述主分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片;
根据所述主分片的子库存数量和最小分片库存,计算次分片数量;
判断所述次分片数量是否大于预设最大分片数;
若大于所述预设最大分片数,按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若不大于所述预设最大分片数,按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
可选的,所述分片类型包括:主分片和次分片;
所述扣减顺序中对所述主分片进行库存扣减的扣减次序在对所述次分片进行库存扣减的扣减次序之前,对子库存数量大的次分片进行库存扣减的扣减次序在对子库存数量小的次分片进行库存扣减的扣减次序之前。
可选的,所述商品的商品信息,包括下述至少一项:
所述商品的历史交易链路信息、所述商品的历史下单信息、所述商品的页面的历史访问信息、所述商品的历史库存请求信息。
根据本申请实施例的第二方面,提供了一种基于分片的库存管理装置,包括:
获取模块,被配置为获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
判断总库存数量模块,被配置为根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,运行判断子库存数量模块;所述判断子库存数量模块,被配置为判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,运行确定扣减顺序模块;所述确定扣减顺序模块,被配置为根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
库存扣减模块,被配置为根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
根据本申请实施例的第三方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:
获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述基于分片的库存管理方法的步骤。
与现有技术相比,本申请具有如下优点:
本申请提供一种基于分片的库存管理方法,包括:获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;若是,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;若不存在,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
本申请提供的基于分片的库存管理方法,通过将热点商品的库存存储于数据库多个分片中,根据库存扣减请求对分片进行扣减,降低了对热点商品单一库存记录频繁扣减的操作,并通过判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片,对于需要扣减多个分片时,确定分片的扣减顺序,提升了对热点商品的库存的扣减效率。
附图说明
图1是本申请实施例提供的一种基于分片的库存管理方法的流程图;
图2是本申请实施例提供的一种应用于电商平台的基于分片的库存管理方法的处理流程图;
图3是本申请实施例提供的一种基于分片的库存管理装置的示意图;
图4是本申请实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
分片:是数据库分区的一种,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片。
乐观锁:读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
在本申请中,提供了一种基于分片的库存管理方法。本申请同时涉及一种基于分片的库存管理装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请实施例的一种基于分片的库存管理方法的流程图,包括步骤S102至步骤S110。
步骤S102,获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片。
本申请实施例所述热点商品,是指需要对商品的库存进行频繁增加或扣减操作的商品,此热点商品可以是电商平台中热卖的商品,票务系统中的需要抢购的票务商品等,本申请实施例以电商平台中热卖的商品为例进行说明,票务系统中的需要抢购的票务商品的具体实现与电商平台中热卖的商品的具体实现类似,参照电商平台中热卖的商品的具体实现即可,在此不再赘述。
具体的,这些热点商品可能是手机A,化妆品B、衣服C、电脑D等,比如在某电商平台中最热卖的有4个商品,分别是手机A、化妆品B、衣服C和电脑D,由于这4个商品的库存消耗非常大,对应的,这些商品的生产量也会很大,则为了满足客户的需求,需要对这4个商品的库存进行频繁增加或扣减操作,这4个商品就可以认为是热点商品。
相应的,热点商品的库存是指实际储存的热点商品,此库存以库存数量的形式存储于商品数据库中,比如在电商平台中,热点商品的库存以热点商品的标识和热点商品的库存数量的形式存储于电商平台后台对应的商品数据库中。
所述库存扣减请求,是指针对热点商品的库存进行扣减的请求,此库存扣减请求中携带对所述热点商品的库存进行扣减的数量。比如在某电商平台中手机A是热点商品,库存扣减请求,是指用户对手机A进行下单的下单请求,此下单请求中携带对手机A的下单数量。
所述分片,是指在商品数据库中将热点商品的库存分成多个更小、更容易管理的部分,用于存储一定热点商品的库存数量,这些部分叫做分片,其中,每一部分叫做一个分片,存储于每一个分片的库存数量称为分片的子库存数量。
在实际应用中,可选的,所述分片包括:1个主分片和至少1个次分片,比如在某电商平台中手机A是热点商品,手机A库存有500,在此电商平台后台对应的商品数据库中,这500个库存分别存储于5个分片中,这5个分片中有1个主分片,其余4个为次分片,其中主分片中存储的手机A的库存数量为100,则主分片的子库存数量为100,4个次分片中每个次分片存储的手机A的库存数量为100,则每个次分片的子库存数量为100。
本申请实施例提供的一种可选实施方式中,所述获取针对热点商品的库存进行扣减的库存扣减请求步骤执行之前,还包括:
1)根据商品的商品信息,确定所述商品中的所述热点商品。
可选的,所述商品的商品信息包含:所述商品的历史交易链路信息、所述商品的历史下单信息、所述商品的页面的历史访问信息、所述商品的历史库存请求信息等。
具体实施时,所述根据商品的商品信息,确定所述商品中的所述热点商品,是指根据在去年一年内的商品的历史交易链路信息、商品的历史下单信息、商品的页面的历史访问信息、商品的历史库存请求信息等信息,查看商品的历史下单量或历史访问量,把历史下单量或历史访问量达到一定标准的商品,确定为热点商品,比如在上述电商平台中的商品有手机A、手机A2、化妆品B、化妆品B2、衣服C和电脑D,预先设定将一年内的历史下单量达到20000个的商品,确定为热点商品,通过去年一年内这些商品的历史下单信息,发现手机A的历史下单量为25000,手机A2的历史下单量为18000,化妆品B的历史下单量为21000,化妆品B2的历史下单量为16000,衣服C的历史下单量为23500,电脑D的历史下单量为21500,其中手机A、化妆品B、衣服C和电脑D在过去一年内的历史下单量达到了20000个,手机A2和化妆品B2在过去一年内的历史下单量没有达到20000个,那么确定手机A、化妆品B、衣服C和电脑D为热点商品,手机A2和化妆品B2为非热点商品。
2)在商品数据库读取所述热点商品的热点状态字段记录的热点状态信息。
所述热点状态字段,是指在商品数据库中存储热点状态信息的一个字段;所述热点状态信息是指对商品进行标识是否开启热点状态的一个状态信息,此热点状态信息一般包含两种状态,一个为热点开启状态,一个为热点关闭状态,比如在上述电商平台中化妆品B为热点商品且已经开启热点状态,化妆品B2为非热点商品,则在该电商平台后台对应的商品数据库中,化妆品B在商品数据库中热点状态字段记录的热点状态信息为热点开启状态,化妆品B2在商品数据库中的热点状态字段记录的热点状态信息为热点关闭状态。
3)判断所述热点状态信息是否为热点开启状态;
若是,执行上述步骤S102,获取针对热点商品的库存进行扣减的库存扣减请求;
若否,更新所述热点状态信息为所述热点开启状态。
具体实施时,确定热点商品,是为了对热点商品的库存进行分片管理,而对热点商品的库存进行分片管理,首先要在商品数据库中将此热点商品的热点状态字段记录的热点状态信息设置为热点开启状态,那么就需要先来判断所述热点状态信息是否为热点开启状态;
若是,表明此热点商品已经开启库存分片管理,执行上述步骤S102,获取针对热点商品的库存进行扣减的库存扣减请求;
若否,表明此热点商品还没有开启库存分片管理,更新所述热点状态信息为所述热点开启状态。
例如,在上述电商平台中,化妆品B是热点商品且在商品数据库中的热点状态信息是热点开启状态,表明化妆品B已经开启库存分片管理,则执行上述步骤S102,获取针对热点商品的库存进行扣减的库存扣减请求。
以上述电商平台的手机A为例,对于手机A已经确定其为热点商品,但手机A在商品数据库中的热点状态信息不是热点开启状态,表明此热点商品还没有开启库存分片管理,则需要更新手机A在商品数据库中的热点状态信息为热点开启状态。
4)为所述热点商品的库存创建分片,并将所述热点商品的库存分配至所述分片。
实际应用中,将热点商品的热点状态信息更新为热点开启状态后,接下来就需要对此热点商品的库存进行分片,所述创建分片是指在商品数据库中将记录热点商品库存的记录拆分成为多个分片;创建分片之后将所述热点商品的库存分配至拆分成的多个分片,比如对于上述热点商品手机A,已经在商品数据库中将其热点状态信息更新为热点开启状态,接下来,为手机A的库存创建分片,手机A在商品数据库中的库存为500,将手机A的500个库存拆分成5个分片,并将这500个库存分配至这5个分片中。
本申请实施例中,通过对热点商品的识别和为热点商品的库存创建分片,降低了对热点商品的库存记录频繁访问的热度,提高了库存变更的效率。
进一步,本申请实施例提供的一种可选实施方式中,上述为所述热点商品的库存创建分片,将所述热点商品的库存分配至所述分片,优选采用如下方法实现:
1)根据所述热点商品的库存数量。
2)根据所述热点商品的库存数量和最小分片库存,计算分片数量。
所述最小分片库存是指预先设定的将热点商品的库存分配至每个分片的最小库存数量,比如预先设定最小分片库存为100,手机A的库存数量为500,将这500个库存分配至每个分片,那么分配至每个分片的子库存数量只能大于等于100。
具体实施时,根据所述热点商品的库存数量和最小分片库存,计算分片数量,是指若将热点商品的库存数量按照最小分片库存进行库存分配,可以分配至多少个分片,分片数量的计算方式为热点商品的库存数量/最小分片库存,比如手机A的库存数量为500,最小分片库存为100,分片数量=总库存数量/最小分片库存,分片数量向下取计算后的整数,即计算而得的分片数量为500/100=5。
3)判断所述分片数量是否大于预设最大分片数;
若是,按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
所述预设最大分片数,是预设为热点商品的库存创建分片的最大分片数量,具体实施时,为了避免实际创建分片时,创建的分片数量过多,会使得对于分片进行管理的难度及耗损增加,判断所述分片数量是否大于预设最大分片数;
若是,表明为热点商品的库存按最小分片库存进行分配时,创建的分片数量过多,会对分片进行管理的难度及耗损增加,则按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,表明为热点商品的库存按最小分片库存进行分配时,计算而得的分片数量是合宜的,则按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
以上述电商平台中的手机A为例,读取到手机A在商品数据库中的库存数量为500,将这500个库存按照预设最小分片库存100分配至分片,计算而得的分片数量为500/100=5,而预设最大分片数为10,经过判断,计算而得的分片数量5小于预设最大分片数10,表明计算而得的分片数量是合宜的,则按照分片数量5为手机A的500个库存创建5个分片,其中1个为主分片,其余4个为次分片,将手机A的500个库存平均分配至这5个分片,每个分片的子库存数量为500/5=100。
以上述电商平台中的化妆品B为例,读取到化妆品B在商品数据库中的库存数量为1500,将这个1500个库存按照预设最小分片库存100分配至分片,计算而得的分片数量为1500/100=15,而预设最大分片数为10,经过判断,计算而得的分片数量15大于预设最大分片数10,表明计算而得的分片数量过多,则按照预设最大分片数10为化妆品B的1500个库存创建10个分片,其中1个为主分片,其余9个为次分片,将化妆品B的1500个库存平均分配至这10个分片,每个分片的子库存数量为1500/10=150。
本申请实施例,为热点商品的库存创建分片的具体实现,有效并合理地分散对热点商品的库存的访问。
步骤S104,根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量。
本申请实施例所述分片的总库存数量是指为所述热点商品的库存创建的所有分片的子库存数量之和,比如手机A在商品数据库中有5个分片,每个分片的子库存数量为100,则手机A在分片的总库存数量为500。
具体实施时,根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,表明所述热点商品在所述分片的总库存数量能够满足所述库存扣减请求,执行下述步骤S106,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若否,表明所述热点商品在所述分片的总库存数量不能满足所述库存扣减请求,输出扣减失败的提示。
以上述电商平台中对热点商品手机A的下单为例,获取到对手机A的下单请求,此下单请求中携带对手机A的下单数量为6个,根据对手机A的下单请求,查询到手机A的库存在商品数据库中有5个分片,且每个分片的子库存数量都为100,将这5个分片的子库存数量100相加,得到手机A的在分片的总库存数量为500,此总库存数量大于对手机A的下单数量,执行下述步骤S106,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片。
以上述电商平台中对热点商品衣服C的下单为例,获取到对衣服C的下单请求,此下单请求中携带对衣服C的下单数量为400件,根据对衣服C的下单请求,查询到衣服C的库存在商品数据库中有6个分片,其中主分片的子库存数量为100,2个次分片的子库存数量为65,3个次分片的子库存数量为50,将这6个分片的子库存数量相加,得到衣服C在分片的总库存数量为380,此总库存数量小于对衣服C的下单数量,输出扣减失败的提示。
步骤S106,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片。
所述待扣减分片,是指根据所述库存扣减请求中携带的库存扣减数量对所述热点商品的分片进行库存扣减的分片。
具体实施时,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若存在,表明所述热点商品的分片中有至少一个分片能够满足所述库存扣减数量,可选的,根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减;
若不存在,表明所述热点商品的分片中没有单独一个分片能够满足所述库存扣减数量,执行下述步骤S108,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序。
以在电商平台中对热点商品手机A下单为例,对手机A的下单数量为6,而手机A的库存有5个分片,每个分片的子库存数量都为100,即每个分片的子库存数量都大于手机A的下单数量,表明在这5个分片中对任何一个分片进行库存扣减都可以满足手机A的下单数量,则在这5个分片中随机选取一个分片进行库存扣减。
以在电商平台中对热点商品化妆品B下单为例,对化妆品B的下单数量为200,而化妆品B的库存有10个分片,每个分片的子库存数量都为150,即每个分片的子库存数量都小于化妆品B的下单数量,表明在这10个分片中对任何一个分片进行库存扣减都不能满足化妆品B的下单数量,则执行下述步骤S108,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序。
本申请实施例中,对可以以单独分片满足库存扣减的分片先进行扣减,减少了跨分片的扣减,提高了库存扣减的效率。
步骤S108,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序。
可选的,所述扣减顺序中对所述主分片进行库存扣减的扣减次序在对所述次分片进行库存扣减的扣减次序之前,对子库存数量大的次分片进行库存扣减的扣减次序在对子库存数量小的次分片进行库存扣减的扣减次序之前,比如对衣服C的下单请求中携带对衣服C的下单数量为150,衣服C在商品数据库中有6个分片,其中1个为主分片,其余5个为次分片,其中主分片的子库存数量为100,2个次分片的子库存数量为65,3个次分片的子库存数量为50,则根据衣服C的分片类型和分片的子库存数量对衣服C的分片进行库存扣减的扣减顺序为先对主分片进行库存扣减,其次是对子库存数量为65的次分片进行库存扣减,最后对子库存数量为50的次分片进行库存扣减。
步骤S110,根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
以上述对热点商品衣服C的下单请求为例,此下单请求中对衣服C的下单数量为150,按照对衣服C的分片进行库存扣减的扣减顺序(先对子库存数量为100的主分片进行库存扣减,其次是对2个子库存数量为65的次分片进行库存扣减,最后对3个子库存数量为50的次分片进行库存扣减),依次对衣服C的分片进行扣减,先对子库存数量为100的主分片进行库存扣减,扣减后,主分片的子库存数量为0,剩余库存扣减数量为150-100=50,其次对2个子库存数量为65的次分片中的任意一个次分片进行库存扣减,扣减后,此次分片的子库存数量为65-50=15,扣减完成。
进一步,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述对所述分片进行库存扣减后的剩余库存扣减数量是否等于0;
若是,表明对所述分片进行库存扣减的扣减结果为扣减成功;
若否,表明所述对所述分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示。
以上述对热点商品衣服C的下单请求为例,此下单请求中对衣服C的下单数量150,则150为对衣服C的库存扣减数量,则根据对衣服C的库存扣减数量对衣服C的分片进行库存扣减后,判断剩余库存扣减数量是为0,表明对衣服C的分片进行库存扣减的扣减结果为扣减成功;
假设上述对热点商品衣服C的下单请求中,根据对衣服C的库存扣减数量对衣服C的分片进行库存扣减后,判断剩余库存扣减数量不为0,则对衣服C的分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示,库存扣减失败的原因多种多样,可能是扣减过程中有其他下单占用了衣服C的分片的子库存数量,导致衣服C的分片的子库存数量不能满足此下单请求中的下单数量而扣减失败,还有可能是其他原因导致扣减失败。
本申请实施例,对扣减的结果进行判断处理,增强了用户库存扣减的体验。
实际应用中,会出现热点商品的分片不足的情况,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,执行下述对分片进行调整的操作:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,表明计算而得的分片数量是不合宜的,判断所述分片的实际数量是否小于所述预设最大分片数;
若小于所述预设最大分片数,表明所述分片的实际数量不足,根据所述预设最大分片数,为所述热点商品的库存创建新分片,并按照库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若不小于所述预设最大分片数,表明所述分片的实际数量没有不足,不做处理即可;
若否,表明计算而得的分片数量是合宜的,判断所述分片的实际数量是否小于所述分片数量;
若小于所述分片数量,表明所述分片的实际数量不足,根据所述分片数量,为所述热点商品的库存创建新分片,并按照所述库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若不小于所述分片数量,表明所述分片的实际数量没有不足,不做处理即可。
所述分片的实际数量为热点商品在商品数据库中的分片数量,比如热点商品手机A在商品数据库中有5个分片,则手机A的分片的实际数量为5。
所述根据所述预设最大分片数,为所述热点商品的库存创建新分片,是指根据预设最大分片数与分片的实际数量的差值,为热点商品的库存创建所述分片中的新的次分片。
相应的,根据所述分片数量,为所述热点商品的库存创建新分片,是指根据计算而得的分片数量与分片的实际数量的差值,为热点商品的库存创建所述分片中的新的次分片。
具体实施时,按照库存迁移顺序,将所述分片的子库存数量迁移至所述所创建的分片,是指若将分片中的主分片的子库存数量按最小分片库存迁移至所创建的分片,主分片的子库存数量不小于最小分片库存,则将主分片的子库存数量按最小分片库存迁移至所述所创建的分片;
若将分片中的主分片的子库存数量按最小分片库存迁移至所创建的分片,会导致主分片的子库存数量小于最小分片库存,则在主分片的子库存数量大于等于最小分片库存的情况下,将主分片的子库存数量按最小分片库存迁移至所述所创建的分片,对所创建的分片中没有进行库存迁移的分片,将分片中的次分片的子库存数量按从大到小的顺序,依次将与所创建的分片中没有进行库存迁移的分片的数量相等的分片中的分片的子库存数量的一半迁移至所创建的分片中没有进行库存迁移的分片。
以热点商品手机A为例,手机A在商品数据库中有5个分片,其中主分片的子库存数量为550,其余4个次分片的子库存数量为100,则手机A的分片的总库存数量为950,根据最小分片库存100,分片数量为950/100=9(向下取整数),计算而得的分片数量9小于预设最大分片数10,则表明计算而得的分片数量9是合宜的,而手机A在商品数据库中的实际分片数量为5,小于计算而得的分片数量,表明手机A的分片的实际数量不足,则根据计算而得的分片数量与分片的实际数量的差值9-5=4,为手机A的库存创建分片,所创建的分片有4个,若将分片中的主分片的子库存数量550按最小分片库存100迁移至所创建的分片,即:从主分片的子库存数量中迁移100库存数量至每个所创建的分片,迁移后,所述主分片的子库存数量为550-100*4=150,此值不小于最小分片库存100,则将主分片的子库存数量迁移100至每个所创建的分片,迁移后手机A有9个分片,其中主分片的子库存数量为150,其余8个次分片的子库存数量为100。
假设手机A在商品数据库中有5个分片,其中主分片的子库存数量250,其余4个次分片的子库存数量分别为150、120、110、80,则手机A在分片的总库存数量为710,根据最小分片库存100,分片数量为710/100=7(向下取整数),计算而得的分片数量7小于预设最大分片数10,则表明计算而得的分片数量7是合宜的,而手机A在商品数据库中的实际分片数量为5,小于计算而得的分片数量,表明手机A的分片的实际数量不足,则根据计算而得的分片数量与分片的实际数量的差值7-5=2,为手机A的库存创建分片,所创建的分片有2个,若将分片中的主分片的子库存数量250按最小分片库存100迁移至所创建的分片,即:从主分片的子库存数量中迁移100库存数量至每个所创建的分片;
迁移后,所述主分片的子库存数量为250-100*2=50,此值小于最小分片库存100,则在主分片的子库存数量大于等于最小分片库存的情况下,将主分片的子库存数量250按最小分片库存100迁移至所创建的分片中的一个,对所创建的分片中的另一个,将分片中的次分片的子库存数量最大的次分片的子库存数量150的一半75迁移至所创建分片中的另一个,迁移后,主分片的子库存数量为150,6个次分片的子库存数量为100、75、75、120、110、80。
本申请实施例,对热点商品在商品数据库中的分片的实际数量出现不足的情况,对分片进行调整,保证了分片的数量和子库存数量之间的合理性。
实际应用中,也会出现热点商品的分片过多的情况,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,执行下述对分片进行调整的操作:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片的实际数量与所述分片数量的差值是否大于等于预设数值;
若是,表明分片的实际数量过多,根据所述分片数量,将所述分片按子库存数量从小到大的顺序,通过将至少一个次分片的子库存数量迁移到所述分片中的主分片的方式回收所述至少一个次分片;
若否,表明分片的实际数量没有过多,不做处理即可。
所述预设数值,是指预设的热点商品库存的分片的实际数量超过计算而得的分片数量的个数。
以热点商品衣服C为例,预设数值为3,衣服C的库存在商品数据库中有6个分片,其中主分片的子库存数量为100,2个次分片的子库存数量为65,3个次分片的子库存数量为50,将这6个分片的子库存数量相加,得到衣服C在分片的总库存数量为380,最小分片库存为100,则分片数量为380/100=3(向下取整数),而衣服C的分片的实际数量为6,衣服C的分片的实际数量与计算而得的分片数量的差值为3,此值等于预设数值,表明衣服C的分片的实际数量过多,则根据衣服C的分片的实际数量与计算而得的分片数量的差值3,将衣服C的6个分片按子库存数量从小到大的顺序,依次将子库存数量为50的3个次分片的子库存数量迁移至子库存数量为100的主分片,迁移后,衣服C的库存有3个分片,其中主分片的子库存数量为100+50*3=250,其余2个次分片的子库存数量为65。
本申请实施例,对热点商品在商品数据库中的分片的实际数量出现过多的情况,对分片进行调整,保证了分片的数量和分片的子库存数量之间的合理性。
实际应用中,还会出现热点商品的主分片的子库存数量太少的情况,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,执行对分片进行调整的操作:
判断所述分片中的主分片的子库存数量是否小于最小分片库;
若是,表明主分片的子库存数量不足,将所述分片中的次分片的子库存数量最大的次分片的子库存数量迁移到所述主分片;
若否,表明主分片的子库存数量充足,不做处理即可。
以热点商品化妆品B为例,对化妆品B的下单数量为200,而化妆品B的库存有10个分片,每个分片的子库存数量都为150,根据下单数量对化妆品B的分片进行库存扣减,扣减后,化妆品B的10个分片,其中主分片的子库存数量为0,其余9个次分片中,1个次分片的子库存数量为50,另外8个次分片的子库存数量为150,则化妆品B的主分片的子库存数量0小于最小分片库存100,表明主分片的子库存数量不足,分片中的次分片的子库存数量最大的次分片有8个,这8个次分片的子库存数量都为150,则随机将这8个次分片中的一个的子库存数量迁移到主分片,并以此方式回收此次分片,迁移后,化妆品B的库存有9个分片,其中主分片的子库存数量为150,其余8个次分片中,1个次分片的子库存数量为50,另外7个次分片的子库存数量为150。
本申请实施例,对热点商品在商品数据库中的主分片的子库存数量较低情况,对分片进行调整,保证了分片的数量和分片的子库存数量之间的合理性。
此外,实际应用中,还会出现热点商品的分片的总库存数量消耗很大情况,本申请实施例提供的一种可选实施方式中,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,执行下述对分片进行调整的操作:
判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,表明分片的总库存数量消耗很大,分片的子库存数量变得较少,则通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片;
根据所述主分片的子库存数量和最小分片库存,计算次分片数量;
判断所述次分片数量是否大于预设最大分片数;
若大于所述预设最大分片数,表明计算而得的次分片数量是不合宜的,按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若不大于所述预设最大分片数,表明计算而得的次分片数量是合宜的,按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若否,表明分片的总库存数量消耗没有达到需要进行分片调整的条件,不做处理即可。
所述热点商品的分片的最大库存数量,是指热点商品在商品数据库中的分片的实际数量在没有发生变化的时间段内的分片的最大总库存数量,也可认为是为热点商品的库存创建分片或对热点商品的分片进行调整之后,没有对分片进行库存扣减前的分片的总库存数量。
所述预设比例,是指预设热点商品的分片的最大库存数量的百分比,若当前热点商品的分片的总库存数量小于热点商品的分片的最大库存数量的预设百分比,表明分片的总库存数量消耗很多,分片的子库存数量变得较少,需要对热点商品的分片进行调整,若当前热点商品的分片的总库存数量不小于热点商品的分片的最大库存数量的预设百分比,表明分片的总库存数量消耗没有达到需要进行分片调整的条件,不做处理即可。
所述将所述主分片的子库存数量迁移至所创建的次分片,包括将主分片的子库存数量在主分片和所创建的次分片之间平均分配。
以热点商品化妆品B为例,化妆品的分片的最大库存数量的预设比例为30%,化妆品B经过分片调整后,在商品数据库中有9个分片,其中主分片的子库存数量为150,其余8个次分片中,1个次分片的子库存数量为50,另外7个次分片的子库存数量为150,则化妆品B在分片的最大库存数量为1250;经过一段时间的消耗,化妆品B在分片的总库存数量变为350,其中主分片的子库存数量为50,其余8个次分片的子库存数量分别为34、40、23、15、60、18、54、56,化妆品的分片的最大库存数量的30%为375,则当前化妆品B的分片的总库存数量350小于化妆品的分片的最大库存数量的30%;
通过将化妆品的8个次分片的子库存数量全部迁移至主分片中的方式回收8个次分片,则化妆品的分片中的主分片的子库存数量变为350,最小分片库存为100,则分片数量为350/100=3(向下取整数),计算而得的分片数量3小于预设最大分片数量10,则按照所述次分片数量减一,为所述热点商品的库存创建2个次分片,并从所述主分片的子库存数量中迁移350/3=150至所创建的每个次分片,迁移后,主分片的子库存数量为150,所创建的2个次分片的子库存数量都为150。
本申请实施例,对热点商品在商品数据库中的分片的总库存数量消耗很多情况,对分片进行调整,保证了分片的数量和分片的子库存数量之间的合理性。
实际应用中,面临对商品数据库中的热点商品的分片的库存进行管理的需求,其中,有对商品数据库中的热点商品的库存数量进行增加的需求,本申请实施例提供的一种可选实施方式中,在对热点商品的分片的子库存数量进行增加管理的情况下,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存增加数量;
所述对所述热点商品的库存进行管理,是指对热点商品的分片的子库存数量进行增加或扣减的管理,包含对热点商品的分片的子库存数量进行增加的库存管理请求或对热点商品的分片的子库存数量进行扣减的库存管理请求;
相应的,对热点商品的分片的子库存数量进行增加的库存管理请求携带热点商品的期望库存增加数量,对热点商品的分片的子库存数量进行扣减的库存扣减请求携带热点商品的期望库存扣减数量;
将所述分片中的主分片的子库存数量增加所述期望库存增加数量。
例如,以上述热点商品手机A为例,获取对手机A分片的子库存数量进行库存管理的库存管理请求,此库存管理请求中携带对手机A的期望库存增加数量为450,手机A的库存有5个分片,其中1个为主分片,其余4个为次分片,主分片和次分片的子库存数量都为100,将期望库存增加数量450加至主分片的子库存数量后,主分片的子库存数量变为550,其余4个次分片的子库存数量仍为100。
本申请实施例,通过对热点商品的库存进行库存增加的管理,优先保持主分片的子库存数量充足,便于对热点商品库存的分片的管理。
此外,实际应用中,面临对商品数据库中的热点商品的分片的库存进行管理的需求中,还包括有对商品数据库中的热点商品的库存数量进行扣减的需求,比如商户需要预留一部分库存另作他用,本申请实施例提供的第一种可选实施方式中,在对商品数据库中的热点商品的分片的子库存数量进行扣减管理的情况下,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量;
判断所述分片中的主分片的子库存数量是否大于或等于所述期望库存扣减数量;
若是,表明主分片的子库存数量能够满足所述期望库存扣减数量,根据所述期望库存扣减数量,对所述主分片进行库存扣减;
若否,表明主分片的子库存数量不能满足所述期望库存扣减数量,根据所述期望库存扣减数量,对所述主分片进行库存扣减,并按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减。
以对热点商品衣服C的库存进行管理为例,获取对衣服C的库存进行管理的库存管理请求,库存管理请求中携带对衣服C的期望库存扣减数量为180,衣服C在商品数据库中有6个分片,其中1个为主分片,其余5个为次分片,其中主分片的子库存数量为100,2个次分片的子库存数量为65,3个次分片的子库存数量为50,则根据期望库存扣减数量,先对衣服C的主分片进行库存扣减,扣减后的主分片的子库存数量为0,再对随机子库存数量为65的2个次分片进行库存扣减,扣减后,上述子库存数量为65的2个次分片中其中一个次分片的子库存数量为0,另外一个次分片的子库存数量为45。
上述根据期望库存扣减数量,对分片中的主分片或次分片进行库存扣减的操作,可以通过加库存乐观锁的方式进行库存扣减,即在对分片中的主分片或次分片进行库存扣减前查询分片中的主分片和次分片的子库存数量,判断所述子库存数量与对分片中的主分片或次分片进行库存扣减时的子库存数量是否一致;若是,对所述主分片和次分片进行库存扣减;若否,输出扣减失败的提示。
本申请实施例,通过对热点商品的库存进行库存扣减管理,并在扣减的过程中以库存乐观锁的方式进行扣减,防止与其他对热点商品的库存进行库存扣减的操作出现冲突。
本申请实施例提供的第二种可选实施方式中,在对商品数据库中的热点商品的分片的子库存数量进行扣减管理的情况下,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量、查询所述热点商品的分片的子库存数量的查询子请求以及根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求;
基于所述查询子请求查询所述热点商品在商品数据库中分片的子库存数量以及所述分片对应的版本号;
判断所述热点商品在所述分片的子库存数量之和是否大于所述期望库存扣减数量;
若是,表明所述热点商品在所述分片的子库存数量之和能够满足所述根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求,基于所述扣减子请求查询所述分片对应的扣减版本号;
若否,表明所述热点商品在所述分片的子库存数量之和不能满足所述根据所述期望库存扣减数量对所述分片进行库存扣减的扣减请求,输出扣减失败的提示;
判断所述版本号与所述扣减版本号是否一致;
若是,表明在所述库存管理过程中,所述分片的数据没有变更,根据期望库存扣减数量,按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减;以及对所述次分片进行库存扣减后,对所述次分片的版本号加一;
若否,表明在所述库存管理过程中,所述分片的数据已经变更,输出扣减失败的提示;
判断根据所述期望库存扣减数量对被扣减的次分片进行库存扣减后的剩余期望库存扣减数量是否为0;
若为0,表明对所述次分片进行库存扣减能够满足期望库存扣减数量,不做处理即可;
若不为0,表明对所述次分片进行库存扣减不能满足期望库存扣减数量,对所述分片中的主分片进行库存扣减;以及对所述主分片进行库存扣减后,对所述主分片的版本号加一。
所述版本号,是一个整数值,只有当热点商品的分片的数据发生变更时,对该分片的版本号加一,此版本号是通过版本乐观锁的机制进行控制的,若对分片进行库存扣减时的扣减版本号等于查询时的版本号,则表明在所述库存管理过程中,分片的数据没有变更,则对热点商品的分片进行库存扣减,若对分片进行库存扣减时的扣减版本号大于查询时的版本号,表明在所述库存管理过程中,分片的数据已经变更,输出扣减失败的提示。
所述剩余期望库存扣减数量,是指根据期望库存扣减数量在对分片中的某一个分片或某一些分片进行库存扣减后,剩余的没有被扣减的期望库存扣减数量,比如对热点商品手机A的期望库存扣减数量为170,手机A在商品数据库中有5个分片,主分片的子库存数量为150,其余4个次分片的子库存数量都为100,对手机A的5个分片中的其中一个次分片根据期望库存扣减数量进行库存扣减后,剩余期望库存扣减数量为170-100=70。
以对热点商品电脑D的库存进行管理为例,获取电脑D的库存进行管理的库存管理请求,此库存管理请求中携带对电脑D的期望库存扣减数量170、查询电脑D的分片的子库存数量的查询子请求以及根据期望库存扣减数量对电脑D的分片进行库存扣减的扣减子请求,基于库存扣减请求中携带的查询电脑D的分片的子库存数量的查询子请求,查询到电脑D在商品数据库中有4个分片,其中主分片的子库存数量为110,其对应的版本号为5,1个次分片的子库存数量为67,其对应的版本号为20,1个次分片的子库存数量为53,其对应的版本号为29,1个次分片的子库存数量为40,其对应的版本号为13;
电脑D在上述4个分片的子库存数量之和为270,此值大于对电脑D的期望库存扣减数量170,表明电脑D在4个分片的子库存数量之和能够满足根据期望库存扣减数量对这4个分片进行库存扣减的扣减子请求,则基于此扣减子请求,查询到其中主分片对应的扣减版本号为5,子库存数量为67的次分片对应的扣减版本号为20,子库存数量为53的次分片对应的扣减版本号为29,子库存数量为40的次分片对应的扣减版本号为13;
对于电脑D的4个分片,每个分片的版本号和基于扣减子请求查询到的扣减版本号相同,表明在对电脑D的此次库存管理过程中,电脑D的库存的4分片的数据没有变更,根据期望库存扣减数量170,按照所述分片中的次分片的子库存数量从大到小的顺序,首先,对子库存数量为67的次分片进行库存扣减,扣减后,此次分片的子库存数量为0,并将此次分片的版本号加一,此次分片的版本号变更为21,其次,对子库存数量为53的次分片进行库存扣减,扣减后,此次分片的子库存数量为0,并将此次分片的版本号加一,此次分片的版本号变更为30,最后,对子库存数量为40的次分片进行库存扣减,扣减后,此次分片的子库存数量为0,并将此次分片的版本号加一,此次分片的版本号变更为14;
对电脑D的库存的3个次分片进行库存扣减后,剩余库存扣减数量为170-67-53-40=10,表明对这3次分片进行库存扣减后不满足期望库存扣减数量,则对电脑D的主分片进行库存扣减,电脑D的主分片的子库存数量为110,扣减后,主分片的子库存数量为100,并将主分片的版本号加一,主分片的版本号变更为6。
本申请实施例,通过对热点商品的库存进行库存扣减管理,并在扣减的过程中以版本乐观锁的方式进行扣减,防止与其他对热点商品的库存进行库存变更的操作出现冲突。
下述结合图2,以本申请提供的基于分片的库存管理方法在电商平台的应用为例,对所述基于分片的库存管理方法进行进一步说明,所述基于分片的库存管理方法具体包括步骤S202至步骤S224。
步骤S202,获取在电商平台中针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片。
步骤S204,根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,执行下述步骤S206;
若否,输出扣减失败的提示。
步骤S206,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若存在,执行下述步骤S208;
若不存在,执行下述步骤S210。
步骤S208,根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减。
步骤S210,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序。
步骤S212,根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
步骤S214,判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,执行下述步骤S216;
若否,不做处理即可。
步骤S216,通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片。
步骤S218,根据所述主分片的子库存数量和最小分片库存,计算次分片数量。
步骤S220,判断所述次分片数量是否大于预设最大分片数;
若是,执行下述步骤S222;
若否,执行下述步骤S224。
步骤S222,按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
步骤S224,按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
本申请提供的基于分片的库存管理方法,通过将热点商品的库存存储于数据库多个分片中,根据库存扣减请求对分片进行扣减,降低了对热点商品单一库存记录频繁扣减的操作,并通过判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片,对于需要扣减多个分片时,确定分片的扣减顺序,提升了对热点商品的库存的扣减效率。
与上述方法实施例相对应,本申请还提供了一种基于分片的库存管理装置实施例,图3示出了本申请一个实施例基于分片的库存管理装置的示意图。如图3所示,该装置包括:
获取模块302,被配置为获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
判断总库存数量模块304,被配置为根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,运行判断子库存数量模块306;所述判断子库存数量模块306,被配置为判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,运行确定扣减顺序模块308;所述确定扣减顺序模块308,被配置为根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
库存扣减模块310,被配置为根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
可选的,若所述判断子库存数量模块306输出的判断结果为存在,运行如下模块:
随机扣减模块,被配置为根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减。
可选的,所述基于分片的库存管理装置,还包括:
判断剩余库存扣减数量模块,被配置为判断所述对所述分片进行库存扣减后的剩余库存扣减数量是否等于0;
若是,运行扣减成功模块;所述扣减成功模块,被配置为所述对所述分片进行库存扣减的扣减结果为扣减成功;
若否,运行扣减失败模块;所述扣减失败模块,被配置为所述对所述分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示。
可选的,所述基于分片的库存管理装置,还包括:
确定热点商品模块,被配置为根据商品的商品信息,确定所述商品中的所述热点商品;
读取热点状态信息模块,被配置为在商品数据库读取所述热点商品的热点状态字段记录的热点状态信息;
判断热点状态信息模块,被配置为判断所述热点状态信息是否为热点开启状态;
若是,运行所述获取模块302;
若否,运行更新热点状态信息模块;所述更新热点状态信息模块,被配置为更新所述热点状态信息为所述热点开启状态;
创建分片模块,被配置为针对所述热点商品的库存创建分片,并将所述热点商品的库存分配至所述分片。
可选的,所述创建分片模块,包括:
获取库存数量子模块,被配置为获取所述热点商品的库存数量;
计算分片数量子模块,被配置为根据所述热点商品的库存数量和最小分片库存,计算分片数量;
判断分片数量子模块,被配置为判断所述分片数量是否大于预设最大分片数;
若是,运行第一创建分片子模块;所述第一创建分片子模块,被配置为按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,运行第二创建分片子模块;所述第二创建分片子模块,被配置为按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
可选的,所述分片的子库存数量,通过运行下述模块进行确定:
获取库存增加请求模块,被配置为获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存增加数量;
库存增加模块,被配置为将所述分片中的主分片的子库存数量增加所述期望库存增加数量。
可选的,所述分片的子库存数量,通过运行下述模块进行确定:
第一获取库存扣减请求模块,被配置为获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量;
判断主分片子库存数量模块,被配置为判断所述分片中的主分片的子库存数量是否大于或等于所述期望库存扣减数量;
若是,运行扣减主分片模块;所述扣减主分片模块,被配置为根据所述期望库存扣减数量,对所述主分片进行库存扣减;
若否,运行扣减分片模块;所述扣减分片模块,被配置为根据所述期望库存扣减数量,对所述主分片进行库存扣减,并按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减。
可选的,所述分片的子库存数量,通过运行下述模块进行确定:
第二获取库存扣减请求模块,被配置为获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量、查询所述热点商品的分片的子库存数量的查询子请求以及根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求;
查询版本号模块,被配置为基于所述查询子请求查询所述热点商品在商品数据库中分片的子库存数量以及所述分片对应的版本号;
判断子库存数量之和模块,被配置为判断所述热点商品在所述分片的子库存数量之和是否大于所述期望库存扣减数量;
若是,运行查询扣减版本号模块;所述查询扣减版本号模块,被配置为基于所述扣减子请求查询所述分片对应的扣减版本号;
判断版本号模块,被配置为判断所述版本号与所述扣减版本号是否一致;
若是,运行分片库存扣减模块;所述分片库存扣减模块,被配置为根据期望库存扣减数量,按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减;以及对所述次分片进行库存扣减后,对所述次分片的版本号加一;判断根据所述期望库存扣减数量对被扣减的次分片进行库存扣减后的剩余期望库存扣减数量是否为0;
若不为0,运行主分片库存扣减模块;所述主分片库存扣减模块,被配置为对所述分片中的主分片进行库存扣减;以及对所述主分片进行库存扣减后,对所述主分片的版本号加一。
可选的,所述基于分片的库存管理装置,还包括:
第一计算分片数量模块,被配置为根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断分片数量模块,被配置为判断所述分片数量是否大于预设最大分片数;
若是,运行第一判断实际数量模块;所述第一判断实际数量模块,被配置为判断所述分片的实际数量是否小于所述预设最大分片数;
若小于所述预设最大分片数,运行第一迁移模块;所述第一迁移模块,被配置为根据所述预设最大分片数,为所述热点商品的库存创建新分片,并按照库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若否,运行第二判断实际数量模块;所述第二判断实际数量模块,被配置为判断所述分片的实际数量是否小于所述分片数量;
若小于所述分片数量,运行第二迁移模块;所述第二迁移模块,被配置为根据所述分片数量,为所述热点商品的库存创建新分片,并按照所述库存迁移顺序,将所述分片的子库存数量迁移至所述新分片。
可选的,所述基于分片的库存管理装置,还包括:
第二计算分片数量模块,被配置为根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断差值模块,被配置为判断所述分片的实际数量与所述分片数量的差值是否大于等于预设数值;
若是,运行回收模块;所述回收模块,被配置为根据所述分片数量,将所述分片按子库存数量从小到大的顺序,通过将至少一个分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述至少一个分片中的次分片。
可选的,所述基于分片的库存管理装置,还包括:
判断主分片子库存数量模块,被配置为判断所述分片中的主分片的子库存数量是否小于最小分片库存;
若是,运行迁移库存模块;所述迁移库存模块,被配置为将所述分片中的次分片的子库存数量最大的次分片的子库存数量迁移到所述主分片。
可选的,所述基于分片的库存管理装置,还包括:
判断分片总库存数量模块,被配置为判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,运行回收次分片模块;所述回收次分片模块,被配置为通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片;
计算次分片数量模块,被配置为根据所述主分片的子库存数量和最小分片库存,计算次分片数量;
判断次分片数量模块,被配置为判断所述次分片数量是否大于预设最大分片数;
若大于所述预设最大分片数,运行第一创建次分片模块;所述第一创建次分片模块,被配置为按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若不大于所述预设最大分片数,运行第二创建次分片模块;所述第二创建次分片模块,被配置为按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
可选的,所述分片类型包括:主分片和次分片;
所述扣减顺序中对所述主分片进行库存扣减的扣减次序在对所述次分片进行库存扣减的扣减次序之前,对子库存数量大的次分片进行库存扣减的扣减次序在对子库存数量小的次分片进行库存扣减的扣减次序之前。
可选的,所述商品的商品信息,包括下述至少一项:
所述商品的历史交易链路信息、所述商品的历史下单信息、所述商品的页面的历史访问信息、所述商品的历史库存请求信息。
上述为本实施例的一种基于分片的库存管理装置的示意性方案。需要说明的是,该基于分片的库存管理装置的技术方案与上述的基于分片的库存管理方法的技术方案属于同一构思,基于分片的库存管理装置的技术方案未详细描述的细节内容,均可以参见上述基于分片的库存管理方法的技术方案的描述。
本申请提供的一种计算设备实施例如下:
图4示出了根据本申请一实施例的计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。
计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备400还可以是移动式或静止式的服务器。
本申请提供一种计算设备,包括存储器410、处理器420及存储在存储器上并可在处理器上运行的计算机指令,所述处理器420用于执行如下计算机可执行指令:
获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
可选的,若所述判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片步骤的判断结果为存在,执行如下操作:
根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述对所述分片进行库存扣减后的剩余库存扣减数量是否等于0;
若是,所述对所述分片进行库存扣减的扣减结果为扣减成功;
若否,所述对所述分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示。
可选的,所述获取针对热点商品的库存进行扣减的库存扣减请求步骤执行之前,还包括:
根据商品的商品信息,确定所述商品中的所述热点商品;
在商品数据库读取所述热点商品的热点状态字段记录的热点状态信息;
判断所述热点状态信息是否为热点开启状态;
若是,执行所述获取针对热点商品的库存进行扣减的库存扣减请求步骤;
若否,更新所述热点状态信息为所述热点开启状态;
为所述热点商品的库存创建分片,并将所述热点商品的库存分配至所述分片。
可选的,所述为所述热点商品的库存创建分片,将所述热点商品的库存分配至所述分片,包括:
获取所述热点商品的库存数量;
根据所述热点商品的库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存增加数量;
将所述分片中的主分片的子库存数量增加所述期望库存增加数量。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量;
判断所述分片中的主分片的子库存数量是否大于或等于所述期望库存扣减数量;
若是,根据所述期望库存扣减数量,对所述主分片进行库存扣减;
若否,根据所述期望库存扣减数量,对所述主分片进行库存扣减,并按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量、查询所述热点商品的分片的子库存数量的查询子请求以及根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求;
基于所述查询子请求查询所述热点商品在商品数据库中分片的子库存数量以及所述分片对应的版本号;
判断所述热点商品在所述分片的子库存数量之和是否大于所述期望库存扣减数量;
若是,基于所述扣减子请求查询所述分片对应的扣减版本号;
判断所述版本号与所述扣减版本号是否一致;
若是,根据所述期望库存扣减数量,按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减;以及对所述次分片进行库存扣减后,对所述次分片的版本号加一;判断根据所述期望库存扣减数量对被扣减的次分片进行库存扣减后的剩余期望库存扣减数量是否为0;
若不为0,对所述分片中的主分片进行库存扣减;以及对所述主分片进行库存扣减后,对所述主分片的版本号加一。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,判断所述分片的实际数量是否小于所述预设最大分片数;
若小于所述预设最大分片数,根据所述预设最大分片数,为所述热点商品的库存创建新分片,并按照库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若否,判断所述分片的实际数量是否小于所述分片数量;
若小于所述分片数量,根据所述分片数量,为所述热点商品的库存创建分片,并按照所述库存迁移顺序,将所述分片的子库存数量迁移至所述新分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片的实际数量与所述分片数量的差值是否大于等于预设数值;
若是,根据所述分片数量,将所述分片按子库存数量从小到大的顺序,通过将至少一个分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述至少一个分片中的次分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片中的主分片的子库存数量是否小于最小分片库存;
若是,将所述分片中的次分片的子库存数量最大的次分片的子库存数量迁移到所述主分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片;
根据所述主分片的子库存数量和最小分片库存,计算次分片数量;
判断所述次分片数量是否大于预设最大分片数;
若大于所述预设最大分片数,按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若不大于所述预设最大分片数,按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
可选的,所述分片类型包括:主分片和次分片;
所述扣减顺序中对所述主分片进行库存扣减的扣减次序在对所述次分片进行库存扣减的扣减次序之前,对子库存数量大的次分片进行库存扣减的扣减次序在对子库存数量小的次分片进行库存扣减的扣减次序之前。
可选的,所述商品的商品信息,包括下述至少一项:
所述商品的历史交易链路信息、所述商品的历史下单信息、所述商品的页面的历史访问信息、所述商品的历史库存请求信息。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的基于分片的库存管理方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述基于分片的库存管理方法的技术方案的描述。
本申请提供的一种计算机可读存储介质实施例如下:
本申请提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:
获取针对热点商品的库存进行扣减的库存扣减请求,所述热点商品的库存存储于多个分片;
根据所述库存扣减请求中携带的所述热点商品的库存扣减数量,判断所述热点商品在所述分片的总库存数量是否大于所述库存扣减数量;
若是,判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片;
若不存在,根据所述分片的分片类型和所述分片的子库存数量,确定对所述分片进行库存扣减的扣减顺序;
根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减。
可选的,若所述判断是否存在所述热点商品的子库存数量大于或者等于所述库存扣减数量的待扣减分片步骤的判断结果为存在,执行如下操作:
根据所述库存扣减数量,在所述待扣减分片中随机选取一个分片进行库存扣减。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述对所述分片进行库存扣减后的剩余库存扣减数量是否等于0;
若是,所述对所述分片进行库存扣减的扣减结果为扣减成功;
若否,所述对所述分片进行库存扣减的扣减结果为扣减失败,输出扣减失败的提示。
可选的,所述获取针对热点商品的库存进行扣减的库存扣减请求步骤执行之前,还包括:
根据商品的商品信息,确定所述商品中的所述热点商品;
在商品数据库读取所述热点商品的热点状态字段记录的热点状态信息;
判断所述热点状态信息是否为热点开启状态;
若是,执行所述获取针对热点商品的库存进行扣减的库存扣减请求步骤;
若否,更新所述热点状态信息为所述热点开启状态;
为所述热点商品的库存创建分片,并将所述热点商品的库存分配至所述分片。
可选的,所述为所述热点商品的库存创建分片,将所述热点商品的库存分配至所述分片,包括:
获取所述热点商品的库存数量;
根据所述热点商品的库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,按照所述预设最大分片数为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片;
若否,按照所述分片数量为所述热点商品的库存创建分片,并将所述热点商品的库存平均分配至所述分片。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存增加数量;
将所述分片中的主分片的子库存数量增加所述期望库存增加数量。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量;
判断所述分片中的主分片的子库存数量是否大于或等于所述期望库存扣减数量;
若是,根据所述期望库存扣减数量,对所述主分片进行库存扣减;
若否,根据所述期望库存扣减数量,对所述主分片进行库存扣减,并按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减。
可选的,所述分片的子库存数量,通过下述方式进行确定:
获取针对所述热点商品的库存进行管理的库存管理请求,所述库存管理请求中携带所述热点商品的期望库存扣减数量、查询所述热点商品的分片的子库存数量的查询子请求以及根据所述期望库存扣减数量对所述分片进行库存扣减的扣减子请求;
基于所述查询子请求查询所述热点商品在商品数据库中分片的子库存数量以及所述分片对应的版本号;
判断所述热点商品在所述分片的子库存数量之和是否大于所述期望库存扣减数量;
若是,基于所述扣减子请求查询所述分片对应的扣减版本号;
判断所述版本号与所述扣减版本号是否一致;
若是,根据所述期望库存扣减数量,按照所述分片中的次分片的子库存数量从大到小的顺序,依次对所述次分片进行库存扣减;以及对所述次分片进行库存扣减后,对所述次分片的版本号加一;判断根据所述期望库存扣减数量对被扣减的次分片进行库存扣减后的剩余期望库存扣减数量是否为0;
若不为0,对所述分片中的主分片进行库存扣减;以及对所述主分片进行库存扣减后,对所述主分片的版本号加一。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片数量是否大于预设最大分片数;
若是,判断所述分片的实际数量是否小于所述预设最大分片数;
若小于所述预设最大分片数,根据所述预设最大分片数,为所述热点商品的库存创建新分片,并按照库存迁移顺序,将所述分片的子库存数量迁移至所述新分片;
若否,判断所述分片的实际数量是否小于所述分片数量;
若小于所述分片数量,根据所述分片数量,为所述热点商品的库存创建分片,并按照所述库存迁移顺序,将所述分片的子库存数量迁移至所述新分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
根据所述分片的总库存数量和最小分片库存,计算分片数量;
判断所述分片的实际数量与所述分片数量的差值是否大于等于预设数值;
若是,根据所述分片数量,将所述分片按子库存数量从小到大的顺序,通过将至少一个分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述至少一个分片中的次分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片中的主分片的子库存数量是否小于最小分片库存;
若是,将所述分片中的次分片的子库存数量最大的次分片的子库存数量迁移到所述主分片。
可选的,所述根据所述库存扣减数量,按照所述扣减顺序对所述分片进行库存扣减步骤执行之后,还包括:
判断所述分片的总库存数量是否小于所述分片的最大库存数量的预设比例;
若是,通过将所述分片中的次分片的子库存数量迁移到所述分片中的主分片的方式回收所述次分片;
根据所述主分片的子库存数量和最小分片库存,计算次分片数量;
判断所述次分片数量是否大于预设最大分片数;
若大于所述预设最大分片数,按照所述预设最大分片数减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片;
若不大于所述预设最大分片数,按照所述次分片数量减一,为所述热点商品的库存创建次分片,并将所述主分片的子库存数量迁移至所创建的次分片。
可选的,所述分片类型包括:主分片和次分片;
所述扣减顺序中对所述主分片进行库存扣减的扣减次序在对所述次分片进行库存扣减的扣减次序之前,对子库存数量大的次分片进行库存扣减的扣减次序在对子库存数量小的次分片进行库存扣减的扣减次序之前。
可选的,所述商品的商品信息,包括下述至少一项:
所述商品的历史交易链路信息、所述商品的历史下单信息、所述商品的页面的历史访问信息、所述商品的历史库存请求信息。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于分片的库存管理方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于分片的库存管理方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。