热点库存本地化扣减方法、系统、设备以及介质技术方案

技术编号:20726590 阅读:41 留言:0更新日期:2019-03-30 18:03
本发明专利技术公开了一种热点库存本地化扣减方法、系统、设备以及介质,包括:于一本地数据库预存至少一种商品的预购件数;接收一订单,订单包括该商品的购买数量;判断本地数据库中的该商品的预购件数是否小于订单中的该商品的购买数量:若是,则对一集群数据库中的该商品的库存数扣减该商品的购买数量;若否,则对本地数据库的预购件数扣减该商品的购买数量,本发明专利技术通过将部分库存本地化,将分布式库存扣减逻辑本地化,实现了多级库存,将部分库存增量更新到应用本地,保证了任何瞬间都有库存可扣,从而提高了整个系统交易的可靠性。

【技术实现步骤摘要】
热点库存本地化扣减方法、系统、设备以及介质
本专利技术涉及的是一种电子结算领域的技术,更具体的说,涉及一种热点库存本地化扣减方法、系统、设备以及介质。
技术介绍
电商网站售卖商品时都会涉及到库存扣减问题,最简单的扣减策略是使用数据库乐观锁“updatestockssetversion=version+1,stock=stock-?whereid=IDandversion=?”,但是这种方式的缺点是如果该有大量用户抢购该商品,那么会产生数据库行锁的竞争,而数据库本身的并发能力并不是特别强,从而导致无法承受很高的并发。较流行的技术方案是在Redis数据库中扣减库存数并将库存流水写入到数据库,通过Redis数据库的事务机制可以实现Redis的乐观锁,但是缺点是因为竞争需要不断的重试,所以可以直接使用脚本完成库存剩余判断逻辑和库存扣减逻辑实现Redis数据库扣减的高性能。现有的数据库乐观锁扣减方案存在热点数据库行锁竞争的问题,会因为乐观锁重试导致连锁反应最终可能导致数据库崩溃,而Redis数据库乐观锁会比数据库乐观锁性能好一些,但是也是同样的问题。Redis数据库扣减库存是较完美的解决方案,但是如果存在库存热点它也是没办法解决的,而且扣减库存的流水记录还是通过数据库记录也会成为瓶颈。在热点库存解决方案有通过将Redis数据库中的库存进行分裂实现,首先对库存分裂为多份,分裂存储到Redis数据库,并将分裂后的KEY保存到库存路由组件汇总;接着扣减库存的应用服务会先查询库存路由组件获取分裂规则,然后轮询到这些分裂的key上进行获取库存,这种方式的缺点是引入了库存路由组件增加了时延,即每次扣减库存时先要查询库存路由组件,这样其实库存路由组件又变成了热点,并没有很好地解决去热点问题;其次需要分裂KEY,这个过程不是原子的,会导致分裂那一瞬间,因为还没有将分裂的KEY注册到库存路由组件上,导致扣减库存失败;另外扣减时需要轮询这些分裂的KEY,导致最坏的情况性能大幅下降。
技术实现思路
针对现有技术存在的问题,本专利技术的目的在于提供一种热点库存本地化扣减方法、系统、设备以及介质,通过将部分库存本地化,将分布式库存扣减逻辑本地化,实现了多级库存,将部分库存增量更新到应用本地,保证了任何瞬间都有库存可扣,从而提高了整个系统交易的可靠性。根据本专利技术的一个方面,提供一种热点库存本地化扣减方法,应用于订单结算服务,包括以下步骤:于一本地数据库预存至少一种商品的预购件数;接收一订单,所述订单包括该商品的购买数量;判断所述本地数据库中的该商品的所述预购件数是否小于所述订单中的该商品的所述购买数量:若是,则对一集群数据库中的该商品的库存数扣减该商品的所述购买数量;若否,则对所述本地数据库的所述预购件数扣减该商品的所述购买数量。优选的,所述本地数据库与所述集群数据库分别形成于不同服务器。优选的,所述对所述本地数据库的所述预购件数扣减该商品的所述购买数量之和,还包括:生成一与所述订单对应的扣减流水信息,并将所述扣减流水信息存储于所述本地数据库。优选的,所述对所述集群数据库的该商品的所述库存数扣减该商品的所述购买数量之和,还包括:生成一与所述订单对应的扣减流水信息,并将所述扣减流水信息存储于所述本地数据库。优选的,所述扣减流水信息包括:流水号、订单ID、用户ID以及所述订单中的所述商品的所述购买数量。优选的,所述热点库存本地化扣减方法还包括:自所述集群数据库中的该商品的库存数中以一预设周期向所述本地数据库补充该商品的所述预购件数。优选的,向所述本地数据库补充该商品的所述预购件数的数量为所述预设周期中所述预购件数被扣减的总数。优选的,所述预设周期为100ms。优选的,所述热点库存本地化扣减方法还包括:将所述本地数据库中的预购件数扣减至零;根据所述本地数据库中的所述预购件数的被扣减数量增加所述集群数据库中的所述库存数。优选的,所述本地数据库中的所述商品的所述预购件数和所述集群数据库中的该商品的所述库存数之和为该商品的库存总数,所述库存总数存储于一库存存储数据库中。根据本专利技术的一个方面,提供一种热点库存本地化扣减系统,用于实现上述的热点库存本地化扣减方法,包括:调度模块,用于在一本地数据库预存至少一种商品的预购件数;订单接收模块,用于接收一订单,所述订单包括该商品的购买数量;比较模块,用于判断所述本地数据库中的该商品的所述预购件数是否小于所述订单中的该商品的所述购买数量:第一扣减模块,用于对一集群数据库中的该商品的库存数扣减该商品的所述购买数量;第二扣减模块,用于对所述本地数据库的所述预购件数扣减该商品的所述购买数量。根据本专利技术的一个方面,提供一种热点库存本地化扣减设备,包括:处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行上述热点库存本地化扣减方法的步骤。根据本专利技术的一个方面,提供一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现上述热点库存本地化扣减方法的步骤。上述技术方案的有益效果是:本专利技术通过将部分库存本地化,将分布式库存扣减逻辑本地化,实现了多级库存,将部分库存增量更新到应用本地,保证了任何瞬间都有库存可扣,从而提高了整个系统交易的可靠性。本专利技术的其它特征和优点以及本专利技术的各种实施例的结构和操作,将在以下参照附图进行详细的描述。应当注意,本专利技术不限于本文描述的具体实施例。在本文给出的这些实施例仅仅是为了说明的目的。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显。图1为本专利技术的较佳的实施例中,一种热点库存本地化扣减方法的具体实施场景;图2为本专利技术的较佳的实施例中,一种热点库存本地化扣减方法的流程示意图;图3为本专利技术的较佳的实施例中,一种库存调度系统与本地数据库的连接框图;图4为本专利技术的较佳的实施例中,一种本地数据库减库存的流程示意图;图5为本专利技术的较佳的实施例中,一种热点库存本地化扣减系统结构框图;图6为本专利技术的较佳的实施例中,一种热点库存本地化扣减设备的结构示意图;图7为本专利技术的较佳的实施例中,一种计算机可读存储介质的结构示意图。从以下结合附图的详细描述中,本专利技术的特征和优点将变得更加明显。贯穿附图,相同的附图标识相应元素。在附图中,相同附图标记通常指示相同的、功能上相似的和/或结构上相似的元件。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。下面结合附图和具体实施例对本专利技术作进一步说明,但不作为本专利技术的限定。图1示出了根据本申请一个方面的一种热点库存本地化扣减方法的具体实施场景。图2示出了根据本申请一个方面的一种热点库存本地化扣减方法的流程示意图。以下基于图1所示的场景对该热点库存本地化扣减方法进行具体的描述。参考图2,热点库存本地化扣减方法具体包括:步骤S101,于一本地数据库预存至少一种商品的预购件数;本文档来自技高网
...

【技术保护点】
1.一种热点库存本地化扣减方法,其特征在于,应用于订单结算服务,包括以下步骤:于一本地数据库预存至少一种商品的预购件数;接收一订单,所述订单包括该商品的购买数量;判断所述本地数据库中的该商品的所述预购件数是否小于所述订单中的该商品的所述购买数量:若是,则对一集群数据库中的该商品的库存数扣减该商品的所述购买数量;若否,则对所述本地数据库的所述预购件数扣减该商品的所述购买数量。

【技术特征摘要】
1.一种热点库存本地化扣减方法,其特征在于,应用于订单结算服务,包括以下步骤:于一本地数据库预存至少一种商品的预购件数;接收一订单,所述订单包括该商品的购买数量;判断所述本地数据库中的该商品的所述预购件数是否小于所述订单中的该商品的所述购买数量:若是,则对一集群数据库中的该商品的库存数扣减该商品的所述购买数量;若否,则对所述本地数据库的所述预购件数扣减该商品的所述购买数量。2.根据权利要求1所述的热点库存本地化扣减方法,其特征在于,所述本地数据库与所述集群数据库分别形成于不同服务器。3.根据权利要求1所述的热点库存本地化扣减方法,其特征在于,所述对所述本地数据库的所述预购件数扣减该商品的所述购买数量之和,还包括:生成一与所述订单对应的扣减流水信息,并将所述扣减流水信息存储于所述本地数据库。4.根据权利要求1所述的热点库存本地化扣减方法,其特征在于,所述对所述集群数据库的该商品的所述库存数扣减该商品的所述购买数量之和,还包括:生成一与所述订单对应的扣减流水信息,并将所述扣减流水信息存储于所述本地数据库。5.根据权利要求3或4所述的热点库存本地化扣减方法,其特征在于,所述扣减流水信息包括:流水号、订单ID、用户ID以及所述订单中的所述商品的所述购买数量。6.根据权利要求1所述的热点库存本地化扣减方法,其特征在于,还包括:自所述集群数据库中的该商品的库存数中以一预设周期向所述本地数据库补充该商品的所述预购件数。7.根据权利要求6所述的热点库存本地化扣减方法,其特征在于,向所述本地数据库补充该商品的所述预购件数的数量为所述...

【专利技术属性】
技术研发人员:张开涛叶晶姜楠费程
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1