库存扣减方法及装置与流程

文档序号:37161689发布日期:2024-03-01 11:57阅读:16来源:国知局
库存扣减方法及装置与流程

本发明涉及互联网,具体涉及一种库存扣减方法及装置。


背景技术:

1、在进销存场景的saas(software-as-a-service,软件即服务)应用中,订单服务和库存服务是必备的功能。由于当一个订单包含非常多的商品(例如上百种商品)时,往往有并发的存在,因此,在对订单商品扣减库存时,需要对库存商品加锁,以避免由于并发而出现商品超卖现象。

2、现有的对商品扣减库存的做法为:针对任意一个订单,遍历订单的商品列表,依次对订单中的每个商品资源调用分布式锁服务为其加锁。然后,在对订单中所有的商品库存扣减后,依次对订单中的每个商品资源调用分布式锁服务为其解锁。

3、然而,上述方案中,存在分布式锁服务的压力较大和订单处理效率慢的问题。


技术实现思路

1、为了解决现有技术存在的分布式锁服务的压力较大和订单处理效率慢的问题,本发明提供了一种库存扣减方法及装置。

2、本发明的技术方案如下:

3、本发明提供了一种库存扣减方法,包括:

4、接收用户侧终端发送的订单请求数据,所述订单请求数据中包括多个商品的商品数据,所述商品数据包括商品id;

5、根据所述订单请求数据,生成加锁请求,所述加锁请求中包含所有待加锁商品id;

6、向分布式锁服务发送所述加锁请求,以使所述分布式锁服务为所有所述待加锁商品id加锁;

7、在接收到所述分布式锁服务返回的加锁成功提示时,对所有所述商品进行库存扣减;

8、在成功对所有所述商品进行库存扣减后,向所述分布式锁服务发送解锁请求,以使所述分布式锁服务为所有待解锁商品id解锁,所述解锁请求中包含所有所述待解锁商品id。

9、可选的,根据所述订单请求数据,生成加锁请求,具体包括:

10、解析所述订单请求数据,得到所有所述商品的商品id;

11、对所有所述商品的商品id去重;

12、根据去重后的所述商品id,生成所述加锁请求,所述加锁请求中包含去重后的所述商品id。

13、可选的,在向分布式锁服务发送所述加锁请求之后,本库存扣减方法,还包括:

14、若自发送所述加锁请求起的第一预设时长的时间段内没有收到所述分布式锁服务返回的加锁成功提示,则执行向分布式锁服务发送所述加锁请求的步骤,直至累计等待加锁成功提示的时长达到第二预设时长后,若依然没有收到所述分布式锁服务返回的加锁成功提示,则确定加锁失败。

15、可选的,本库存扣减方法,还包括:

16、针对任一所述待加锁商品id,若自完成为所述待加锁商品id加锁时起的第三预设时长的时间段内,所述分布式锁服务没有收到所述解锁请求,则所述分布式锁服务自动为所述待加锁商品id解锁。

17、可选的,所述分布式锁服务为redis cluster,且所述分布式锁服务使用lua脚本。

18、可选的,对所有所述商品进行库存扣减,具体包括:

19、向商品库存数据库发送库存查询请求,所述库存查询请求中包含所有所述商品的商品id;

20、接收所述商品库存数据库返回的商品库存数据,所述商品库存数据包括所有所述商品的库存数量;

21、根据所述商品库存数据和所有所述商品的商品购买数量,进行库存分析,所述商品数据还包括商品购买数量;

22、若分析结果表示存在库存不足的商品,则生成商品库存不足提示;

23、若分析结果表示不存在库存不足的商品,则根据所述商品库存数据和所有所述商品的商品购买数量,计算所有所述商品进行库存扣减后的剩余数量;

24、根据所有所述商品进行库存扣减后的剩余数量,生成库存更新请求;

25、将所述库存更新请求发送给所述商品库存数据库,以使所述商品库存数据库更新所有所述商品的库存数量。

26、可选的,根据所述商品库存数据和所有所述商品的商品购买数量,进行库存分析,具体包括:

27、以各所述商品逐一作为目标商品,并执行如下步骤:

28、根据所述商品库存数据,确定所述目标商品的库存数量;

29、根据所有所述商品的商品购买数量,确定所述目标商品的商品购买数量;

30、判断所述目标商品的库存数量是否小于所述所述目标商品的商品购买数量;

31、若所述目标商品的库存数量小于所述所述目标商品的商品购买数量,则确定所述目标商品的库存不足;

32、若所述目标商品的库存数量不小于所述所述目标商品的商品购买数量,则确定所述目标商品的库存充足。

33、可选的,本库存扣减方法,还包括:

34、在第一次确定出任一商品的库存不足时,结束库存分析。

35、本发明还提供了一种库存扣减装置,包括:

36、接收订单请求数据模块,用于接收用户侧终端发送的订单请求数据,所述订单请求数据中包括多个商品的商品数据,所述商品数据包括商品id;

37、生成加锁请求模块,用于根据所述订单请求数据,生成加锁请求,所述加锁请求中包含所有待加锁商品id;

38、加锁模块,用于向分布式锁服务发送所述加锁请求,以使所述分布式锁服务为所有所述待加锁商品id加锁;

39、库存扣减模块,用于在接收到所述分布式锁服务返回的加锁成功提示时,对所有所述商品进行库存扣减;

40、解锁模块,用于在成功对所有所述商品进行库存扣减后,向所述分布式锁服务发送解锁请求,以使所述分布式锁服务为所有待解锁商品id解锁,所述解锁请求中包含所有所述待解锁商品id。

41、可选的,所述库存扣减模块,具体用于:

42、向商品库存数据库发送库存查询请求,所述库存查询请求中包含所有所述商品的商品id;

43、接收所述商品库存数据库返回的商品库存数据,所述商品库存数据包括所有所述商品的库存数量;

44、根据所述商品库存数据和所有所述商品的商品购买数量,进行库存分析,所述商品数据还包括商品购买数量;

45、若分析结果表示存在库存不足的商品,则生成商品库存不足提示;

46、若分析结果表示不存在库存不足的商品,则根据所述商品库存数据和所有所述商品的商品购买数量,计算所有所述商品进行库存扣减后的剩余数量;

47、根据所有所述商品进行库存扣减后的剩余数量,生成库存更新请求;

48、将所述库存更新请求发送给所述商品库存数据库,以使所述商品库存数据库更新所有所述商品的库存数量。

49、本发明采用上述技术方案,具备如下有益效果:

50、本发明的库存扣减方法,通过一次性将所有待加锁商品id发送给分布式锁服务,以使分布式锁服务为所有待加锁商品id进行批量加锁,也即,本发明在对所有待加锁商品id进行加锁时,只需调用一次分布式锁服务;同样,本发明在对所有待解锁商品id进行批量解锁时,也只需调用一次分布式锁服务。这使得本发明减少了与分布式锁服务的交互次数,降低了分布式锁服务的访问压力,减轻了网络延时对加锁和解锁时长的影响,进而,提高了订单的加锁和解锁效率,提高了订单的处理效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1