CN115391364A - 一种商品库存数据处理方法及装置 - Google Patents

一种商品库存数据处理方法及装置 Download PDF

Info

Publication number
CN115391364A
CN115391364A CN202211052929.XA CN202211052929A CN115391364A CN 115391364 A CN115391364 A CN 115391364A CN 202211052929 A CN202211052929 A CN 202211052929A CN 115391364 A CN115391364 A CN 115391364A
Authority
CN
China
Prior art keywords
inventory
value
deducible
deduction
stock
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
Application number
CN202211052929.XA
Other languages
English (en)
Inventor
张胜
刘祖送
陈一鸣
田魁
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hunan MgtvCom Interactive Entertainment Media Co Ltd
Original Assignee
Hunan MgtvCom Interactive Entertainment Media Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hunan MgtvCom Interactive Entertainment Media Co Ltd filed Critical Hunan MgtvCom Interactive Entertainment Media Co Ltd
Priority to CN202211052929.XA priority Critical patent/CN115391364A/zh
Publication of CN115391364A publication Critical patent/CN115391364A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2372Updates performed during offline database operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/288Entity relationship models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders
    • G06Q10/0875Itemisation or classification of parts, supplies or services, e.g. bill of materials

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Finance (AREA)
  • Accounting & Taxation (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供的一种商品库存数据处理方法及装置,应用于库存服务端,可以获得扣减库存请求中待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量;根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值;在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值;向库存离线服务端发送第一库存变更消息,以使库存离线服务端根据第一库存变更消息,对第二数据库中与目标库存商品关联的库存数据进行更新。本公开通过在库存服务端实现库存扣减事务处理,可以减轻库存离线服务端的第二数据库的处理压力,有助于在高并发场景下提升下单环节的效率。

Description

一种商品库存数据处理方法及装置
技术领域
本公开涉及数据处理技术领域,尤其涉及一种商品库存数据处理方法及装置。
背景技术
随着互联网技术的发展,网络线上购物也越来越普及,电商平台也在努力地向商家和购物用户提供更加优质的购物体验。
在线上购物过程中,下单环节作为最关键的购物环节之一,下单环节的效率成为影响电商平台用户体验的重要指标。当前,由于电商平台积累的用户量大,在相关商品促销活动火爆的情况下,下单量会瞬间激增,相关库存服务数据库在瞬时多个下单请求的高并发场景下会限制下单请求处理性能,降低下单处理速率,有时甚至引发数据库卡死,严重影响用户在电商平台上的正常购物交易体验。
因此,如何在高并发场景下提升下单环节的效率,成为本领域技术人员急需解决的技术问题。
发明内容
鉴于上述问题,本公开提供一种克服上述问题或者至少部分地解决上述问题的一种商品库存数据处理方法及装置,技术方案如下:
一种商品库存数据处理方法,应用于库存服务端,所述方法包括:
获得订单服务端发送的扣减库存请求,其中,所述扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对所述目标库存商品的请求扣减数量;
根据所述库存唯一键,在第一数据库中确定所述目标库存商品的第一可扣减库存值;
在所述请求扣减数量不大于所述第一可扣减库存值的情况下,将所述第一数据库中所述目标库存商品的所述第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为所述第一可扣减库存值与所述请求扣减数量的差值;
向库存离线服务端发送第一库存变更消息,其中,所述第一库存变更消息包括所述库存唯一键和所述第二可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第二可扣减库存值,对第二数据库中与所述目标库存商品关联的库存数据进行更新。
可选的,所述方法还包括:
在所述请求扣减数量不大于所述第一可扣减库存值的情况下,向所述订单服务端反馈与所述扣减库存请求对应的扣减库存成功消息,以使所述订单服务端根据所述扣减库存成功消息,创建与所述目标库存商品对应的商品订单。
可选的,在所述向所述订单服务端反馈与所述扣减库存请求对应的扣减库存成功消息之后,所述方法还包括:
在获得所述订单服务端发送的所述商品订单的创建订单失败消息的情况下,将所述第一数据库中所述目标库存商品的所述第二可扣减库存值回滚至所述第一可扣减库存值;
向所述库存离线服务端发送第二库存变更消息,其中,所述第二库存变更消息包括所述库存唯一键和所述第一可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第一可扣减库存值,对所述第二数据库中与所述目标库存商品关联的所述库存数据进行更新。
可选的,所述库存唯一键由所述目标库存商品对应的库存类型参数和库存保有单位标识组成,所述第一可扣减库存值为所述第二数据库中与所述库存保有单位标识对应的商品库存保有单位表中第一库存字段对应的库存值。
可选的,所述库存唯一键由所述目标库存商品对应的库存类型参数、库存保有单位标识以及活动标识组成,所述第一可扣减库存值为所述第二数据库中与所述活动标识对应的活动商品表中第二库存字段对应的库存值。
可选的,所述库存数据包括所述商品库存保有单位表中所述第一库存字段对应的库存值。
可选的,所述库存数据包括所述活动商品表中所述第二库存字段对应的库存值和所述库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值。
可选的,所述方法还包括:
在所述请求扣减数量大于所述第一可扣减库存值的情况下,向所述订单服务端反馈与所述扣减库存请求对应的扣减库存失败消息,以使所述订单服务端根据所述扣减库存失败消息,向用户端反馈下单失败消息。
可选的,所述第一数据库为Redis数据库,和/或,所述第二数据库为MySQL数据库。
一种商品库存数据处理装置,应用于库存服务端,包括:扣减库存请求获得单元、第一确定单元、可扣减库存值修改单元以及第一发送单元,
所述扣减库存请求获得单元,用于获得订单服务端发送的扣减库存请求,其中,所述扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对所述目标库存商品的请求扣减数量;
所述第一确定单元,用于根据所述库存唯一键,在第一数据库中确定所述目标库存商品的第一可扣减库存值;
所述可扣减库存值修改单元,用于在所述请求扣减数量不大于所述第一可扣减库存值的情况下,将所述第一数据库中所述目标库存商品的所述第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为所述第一可扣减库存值与所述请求扣减数量的差值;
所述第一发送单元,用于向库存离线服务端发送第一库存变更消息,其中,所述第一库存变更消息包括所述库存唯一键和所述第二可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第二可扣减库存值,对第二数据库中与所述目标库存商品关联的库存数据进行更新。
借由上述技术方案,本公开提供的一种商品库存数据处理方法及装置,应用于库存服务端,可以获得订单服务端发送的扣减库存请求,其中,扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量;根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值;在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为第一可扣减库存值与请求扣减数量的差值;向库存离线服务端发送第一库存变更消息,其中,第一库存变更消息包括库存唯一键和第二可扣减库存值,以使库存离线服务端根据库存唯一键和第二可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。本公开通过在库存服务端实现库存扣减事务处理,可以减轻库存离线服务端的第二数据库的处理压力,提高请求处理效率,有助于在高并发场景下提升下单环节的效率,为电商平台上的用户提供优质的服务体验。
上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本公开实施例提供的商品库存数据处理方法的一种实施方式的流程示意图;
图2示出了本公开实施例提供的订单数据模型的表数据关联关系的示意图;
图3示出了本公开实施例提供的商品库存数据处理方法的另一种实施方式的流程示意图;
图4示出了本公开实施例提供的商品库存数据处理方法的另一种实施方式的流程示意图;
图5示出了本公开实施例提供的下单库存变更流程的时序图;
图6示出了本公开实施例提供的商品库存数据处理装置的一种结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
当前,传统的商品库存数据主要保存在电商平台相应的MySQL数据库中。由于MySQL数据库的读写性能有限,在高并发下单场景下,会导致处理相关库存请求和库存数据修改的速率下降,甚至MySQL数据库卡死,严重影响相关用户的使用体验。
为了解决上述问题,本公开实施例提供的商品库存数据处理方法可以应用于库存服务端,库存服务端也可以称为库存服务器。可选的,库存服务端可以包括第一数据库。该第一数据库可以为一个高性能的key-value(键-值)数据库。可选的,第一数据库可以为Redis数据库。本公开实施例可以将商品库存数据存储在库存服务端,由库存服务端代替库存服务数据库处理库存读写请求,由于Redis数据库的读写能力远远高出MySQL数据库的性能,因此可以减少硬件设备的数量,提高库存数据处理效率。
如图1所示,本公开实施例提供的商品库存数据处理方法的一种实施方式的流程示意图,该商品库存数据处理方法可以包括:
S100、获得订单服务端发送的扣减库存请求,其中,扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量。
其中,订单服务端可以是搭载电商平台的前端订单系统的订单服务器。订单服务端可以接收用户提交的下单请求,根据下单请求生成相应的扣减库存请求,其中,下单请求可以包括目标库存商品的商品标识、库存保有单位标识以及下单数量。
订单服务端可以根据商品标识和库存保有单位标识确定目标库存商品对应的库存类型参数,从而生成目标库存商品的库存唯一键。订单服务端可以将下单数量作为请求扣减数量,将请求扣减数量和库存唯一键打包成扣减库存请求,将扣减库存请求发送至库存服务端。
其中,库存类型参数可以是预先针对电商业务中的商品库存设计的促销活动区分参数。库存类型参数可以用于识别库存商品是否参与促销活动,如果参与促销活动,则继续识别是否限制有活动期限。
订单服务端可以在第二数据库中查询商品标识和库存保有单位标识,确定目标库存商品对应的库存类型参数。本公开实施例可以在第二数据库中通过订单数据模型对库存商品的库存数据之间的关联关系进行管理。其中,订单数据模型可以是实体联系模型(Entity-Relationship Model,E-R模型)。
参考图2所示的订单数据模型,订单服务端在获得商品标识(id)和库存保有单位标识(sku_id)之后,在第二数据库中的订单数据模型中查询是否有与该商品标识对应的活动商品表(active_goods),如果没有,则库存类型参数stype=1,表示库存商品没有参加促销活动。如果有与该商品标识对应的活动商品表,则确定是否与该活动商品表中活动标识(活动id)对应的活动信息表(active_info),如果没有,则库存类型参数stype=2,表示库存商品参加促销活动并限制有活动总库存(total_store)。如果有与该活动商品表中活动标识对应的活动信息表,则库存类型参数stype=3,表示库存商品参加促销活动,并限制有活动总库存和促销期限。其中,促销期限为活动信息表中的活动开始时间(begin_time)至活动结束时间(end_time)。
如图2所示的订单数据模型,库存数据主要记录在库存表(store)和库存变更记录表(store_update_log)中。此外,与库存数据存在关联关系的还涉及商品sku表(goods_sku)、商品表(goods_info)、活动商品表以及活动信息表。其中,商品sku表也称为商品库存保有单位表。
在本公开实施例提供的库存服务端中,主要是在日常销售过程中对订单数据模型的商品sku表中的库存和活动商品表中的活动剩余库存进行管理。
其中,库存唯一键(sid)可以是库存商品的唯一索引标识,表示管理库存单元的唯一索引。可选的,根据库存商品是否参加促销活动,对该库存商品生成库存唯一键的规则可以不同。
可选的,在库存商品不参加促销活动的情况下,库存唯一键可以由目标库存商品对应的库存类型参数和库存保有单位标识组成。
可选的,在库存商品参加促销活动的情况下,库存唯一键可以由目标库存商品对应的库存类型参数、库存保有单位标识以及活动标识组成。
可选的,结合库存类型参数stype的取值,库存唯一键的生成规则可以如表1所示。库存唯一键的关键数据以下划线“_”拼接,第一段保存stype的取值,这样可以提升库存唯一键的解析效率,同时stype的取值可以表示库存类型,方便库存服务提供方根据自身业务需求,自定义stype的取值对应的库存类型,提升业务服务的通用性。
表1
stype sid 说明
1 stype+'_'+sku_id 商品类型库存
2 stype+'_'+sku_id+'_'+active_id 活动商品库存
本公开实施例提供的库存服务端,可以根据库存管理实际涉及的多业务场景,根据不同的业务场景定义不同的库存类型参数stype的取值,保证库存唯一键的唯一性,不同的业务场景互不影响。同时,由于库存唯一键设计简短,可以支持大量各种库存管理的业务场景,例如优惠券、奖品、游戏道具、活动道具等的库存管理。
S200、根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值。
库存服务端预先以string结构对库存数据进行保存,其中。key保存库存唯一键,value保存第一可扣减库存值。库存服务端通过库存唯一键和第一可扣减库存值的对应存储,可以实现库存数据的高效存储。通过将库存唯一键设置为key,可以使得key的字符尽量少,一方面可以减少数据传输提升性能,另一方面也可以节约Redis内存,从而增加库存服务管理的商品数量。
本公开实施例可以通过目标库存商品的库存唯一键,快速查询在库存服务端存储的与该库存唯一键对应的第一可扣减库存值。本公开实施例可以在批量查库存场景下使用Redis的mget命令快速查询多个库存商品的第一可扣减库存值。
可选的,在目标库存商品不参加促销活动的情况下,第一可扣减库存值可以为第二数据库中与库存保有单位标识对应的商品库存保有单位表中第一库存字段对应的库存值。
其中,第一库存字段可以是商品库存保有单位表中的“store_count”字段。可以理解的是,在目标库存商品不参加促销活动的情况下,目标库存商品的可扣减数量不存在活动剩余库存的限制,库存服务端可以直接将商品库存保有单位表中第一库存字段对应的库存值确定为第一可扣减库存值。
可选的,在目标库存商品参加促销活动的情况下,第一可扣减库存值为第二数据库中与活动标识对应的活动商品表中第二库存字段对应的库存值。
其中,第二库存字段可以是活动商品表中的“store_count”字段。可以理解的是,在目标库存商品参加促销活动的情况下,库存唯一键包括活动标识,目标库存商品的可扣减数量存在活动剩余库存的限制,库存服务端可以将活动商品表中第二库存字段对应的库存值确定为第一可扣减库存值。
可选的,本公开实施例可以在请求扣减数量大于第一可扣减库存值的情况下,向订单服务端反馈与扣减库存请求对应的扣减库存失败消息,以使订单服务端根据扣减库存失败消息,向用户端反馈下单失败消息。
可以理解的是,在请求扣减数量大于第一可扣减库存值的情况下,由于目标库存商品的实际可扣减库存量低于下单请求的下单数量,无法满足用户的下单请求,因此可以向订单服务端反馈扣减库存失败消息,进而向用户端反馈下单失败消息。可选的,下单失败消息可以包括下单失败原因信息。可选的,在请求扣减数量大于第一可扣减库存值的情况下,向用户端反馈的下单失败消息中的下单失败原因信息可以为“商品库存不足”。本公开实施例通过向用户端反馈下单失败消息,可以提示用户下单失败原因,以使用户在修改下单数量,重新发起下单请求。
S300、在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为第一可扣减库存值与请求扣减数量的差值。
可以理解的是,在请求扣减数量不大于第一可扣减库存值的情况下,目标库存商品的实际可扣减库存量不低于下单请求的下单数量,可以满足用户的下单请求,为了保证库存服务端中的目标库存商品的实际可扣减库存量的正确,同时防止在对目标库存商品存在多条扣减库存请求的情况下扣减库存出错,可以对目标库存商品的第一可扣减库存值进行修改,修改为第一可扣减库存值与请求扣减数量的差值,即修改为第二可扣减库存值。
可以理解的是,在将目标库存商品的第一可扣减库存值修改为第二可扣减库存值之后,若获得对目标库存商品的另一个扣减库存请求,则该扣减库存请求中的请求扣减数量与该第二可扣减库存值进行对比。
S400、向库存离线服务端发送第一库存变更消息,其中,第一库存变更消息包括库存唯一键和第二可扣减库存值,以使库存离线服务端根据库存唯一键和第二可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。
可选的,库存离线服务端可以包括第二数据库。第二数据库可以为关系型数据库。可选的,第二数据库可以为MySQL数据库。第二数据库中保存有订单数据模型。本公开实施例在将第一库存变更消息发送至库存离线服务端之后,由库存离线服务端在订单数据模型中查询与库存唯一键对应的库存表,进而确定与目标库存商品关联的库存数据,根据第二可扣减库存值对库存数据进行更新,保证第二数据库与第一数据库之间的数据同步。
可选的,在库存商品不参加促销活动的情况下,库存数据可以包括商品库存保有单位表中第一库存字段对应的库存值。
可以理解的是,在库存商品不参加促销活动的情况下,第二数据库中的商品库存保有单位表中第一库存字段对应的库存值需要修改。在修改前,第二数据库中的商品库存保有单位表中第一库存字段对应的库存值为第一可扣减库存值,为了保持与第一数据库一致,需要将第二数据库中的商品库存保有单位表中第一库存字段对应的库存值修改为第二可扣减库存值。
可选的,在库存商品参加促销活动的情况下,库存数据包括活动商品表中第二库存字段对应的库存值和库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值。
可以理解的是,在库存商品参加促销活动的情况下,第二数据库中的活动商品表中第二库存字段对应的库存值和库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值需要修改。在修改前,活动商品表中第二库存字段对应的库存值为第一可扣减库存值,为了保持与第一数据库一致,需要将第二数据库中的活动商品表中第二库存字段对应的库存值修改为第二可扣减库存值。
其中,第三库存字段可以是商品库存保有单位表中的“store_count”字段。可以理解的是,由于活动剩余库存的变动,也会导致商品库存保有单位表中的库存发生变动,因此需要将库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值减去第二可扣减库存值与第一可扣减库存值的差值,即商品库存保有单位表中第三库存字段对应的库存值减去请求扣减数量。
可选的,库存离线服务端可以在对订单数据模型中与目标库存商品关联的库存数据进行更新之后,将本次更新内容记录至库存变更记录表中。
可选的,库存服务端和库存离线服务端可以通过kafka消息组件连接。库存服务端和库存离线服务端可以集成为库存存储装置。该库存存储装置可以提供包括查批量查询库存、批量修改库存以及后台查询库存的服务接口,通过生成和消费kafka消息,实现库存变更。
本公开实施例提供的商品库存数据处理方法的数据一致性由库存服务端保证。库存服务端以哨兵模式搭建的Redis集群,哨兵模式本质上是一主多从,但是在Redis主从基础上添加了一个监控系统(Redis Sentinel系统),Redis哨兵会监控Redis主从节点运行状态,当主节点故障下线后,Redis哨兵会选择一个从节点充当新的主节点,继续提供服务,提高服务的稳定性和可用性。同时,Redis保证以一种原子性的方式来执行Lua脚本,结合哨兵模式使用,Lua脚本只会发给主节点执行,且由于Redis的单线程特性,可以保证库存变更以事务的方式执行。扣减库存请求会优先请求Redis中的数据,再通过kafka消息组件发送库存变更消息至库存离线服务端,进而把库存的修改结果同步至MySQL数据库中对应的表里,以方便其他业务可以通过MySQL数据库进行查询。
本公开实施例可以通过预先编写好的数据初始化脚本,批量读取第二数据库中商品库存保有单位表和活动商品表中的数据,并通过库存批量更新接口完成从MySQL库存数据到Redis库存数据的同步。本公开实施例可以在预设维护时间执行该数据初始化脚本,也可以按照不同的库存类型,分批次进行库存数据的同步。可选的,预设维护时间可以为02:00。
可选的,本公开实施例可以使用RDB持久化机制保证Redis服务稳定。
可选的,本公开实施例可以使用kafka消息组件实现异步落库功能,,在不牺牲性能的情况下尽快将数据落库,即对MySQL数据库中库存表、商品库存保有单位表以及活动商品表都保存一份副本。
可选的,本公开实施例可以在Redis服务宕机且RDB持久化数据无法恢复时,通过数据初始化脚本读取MySQL数据库的库存数据进行数据初始化。
本公开提供的一种商品库存数据处理方法,应用于库存服务端,可以获得订单服务端发送的扣减库存请求,其中,扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量;根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值;在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为第一可扣减库存值与请求扣减数量的差值;向库存离线服务端发送第一库存变更消息,其中,第一库存变更消息包括库存唯一键和第二可扣减库存值,以使库存离线服务端根据库存唯一键和第二可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。本公开通过在库存服务端实现库存扣减事务处理,可以减轻库存离线服务端的第二数据库的处理压力,提高请求处理效率,有助于在高并发场景下提升下单环节的效率,为电商平台上的用户提供优质的服务体验。
可选的,基于图1所示方法,如图3所示,本公开实施例提供的商品库存数据处理方法的另一种实施方式的流程示意图,该商品库存数据处理方法还可以包括:
S500、在请求扣减数量不大于第一可扣减库存值的情况下,向订单服务端反馈与扣减库存请求对应的扣减库存成功消息,以使订单服务端根据扣减库存成功消息,创建与目标库存商品对应的商品订单。
本公开实施例通过扣减库存成功消息,可以告知订单服务端目标库存商品的库存充足,能够满足用户的下单请求,允许创建与目标库存商品对应的商品订单。
可选的,订单服务端在创建商品订单成功之后,可以向用户端发送下单成功消息。
可选的,订单服务端在创建商品订单失败之后,可以向用户端发送下单失败消息。
可选的,基于图3所示方法,如图4所示,本公开实施例提供的商品库存数据处理方法的另一种实施方式的流程示意图,在步骤S500之后,该商品库存数据处理方法还可以包括:
S600、在获得订单服务端发送的商品订单的创建订单失败消息的情况下,将第一数据库中目标库存商品的第二可扣减库存值回滚至第一可扣减库存值。
可以理解的是,在实际的下单环节中,可能由于网络异常或其他原因导致订单服务端创建商品订单失败。订单服务端在创建商品订单失败的情况下,可以向库存服务端反馈创建订单失败消息,以便库存服务端对目标库存商品在第一数据库保存的可扣减库存值进行回滚。
S700、向库存离线服务端发送第二库存变更消息,其中,第二库存变更消息包括库存唯一键和第一可扣减库存值,以使库存离线服务端根据库存唯一键和第一可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。
本公开实施例在将第二库存变更消息发送至库存离线服务端之后,由库存离线服务端在订单数据模型中查询与库存唯一键对应的库存表,进而确定与目标库存商品关联的库存数据,根据第一可扣减库存值对第二数据库中的库存数据进行回滚更新,保证第二数据库与第一数据库之间的数据同步。
可以理解的是,在库存商品不参加促销活动的情况下,第二数据库中的商品库存保有单位表中第一库存字段对应的库存值需要修改。在修改前,第二数据库中的商品库存保有单位表中第一库存字段对应的库存值为第二可扣减库存值,为了保持与第一数据库一致,需要将第二数据库中的商品库存保有单位表中第一库存字段对应的库存值回滚修改为第一可扣减库存值。
可以理解的是,在库存商品参加促销活动的情况下,第二数据库中的活动商品表中第二库存字段对应的库存值和库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值需要修改。在修改前,活动商品表中第二库存字段对应的库存值为第二可扣减库存值,为了保持与第一数据库一致,需要将第二数据库中的活动商品表中第二库存字段对应的库存值回滚修改为第一可扣减库存值。
其中,第三库存字段可以是商品库存保有单位表中的“store_count”字段。可以理解的是,由于活动剩余库存的变动,也会导致商品库存保有单位表中的库存发生变动,因此需要将库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值加上第二可扣减库存值与第一可扣减库存值的差值,即商品库存保有单位表中第三库存字段对应的库存值加上请求扣减数量,完成数据回滚。
本公开实施例可以在订单服务端创建商品订单失败的情况下,及时对第一数据库和第二数据库进行数据回滚,及时还原目标库存商品的库存值,保证目标库存商品的库存数据的正确性。
为了从整体理解本公开实施例提供的商品库存数据处理方法,以下结合图5进行说明:订单服务端在接收到用户端提交的下单请求后,先判断目标库存商品的库存类型参数,再按照库存唯一键的生成规则生成库存唯一键,然后组装成Lua脚本所需传参格式(keys,args),keys和args都是数组格式,其中keys按顺序保存要修改的目标库存商品对应的库存唯一键,args按顺序保存每个库存唯一键要变更的库存数(增加为正数,扣减为负数)。以(keys,args)作为入参执行库存变更的Lua脚本,Lua脚本的逻辑可以如下所示:
Figure BDA0003824454890000141
Lua脚本返回信息以“|”拼接,第一位为处理结果状态标识,0表示失败,1表示成功,如果修改成功还可以获取每个库存唯一键对应的修改后的库存。
图5所示为本公开实施例提供的下单库存变更流程的时序图。如果扣减库存失败,直接给用户提示库存不足,下单失败;若库存扣减成功则继续执行创建订单流程,如果创建订单失败,则进行库存回滚操作,即把扣减库存时的传参args每个值都取反,然后作为入参执行Lua脚本即可,因为回滚是加库存操作,一定能加成功。同时,每一步库存修改成功都会发送库存变更消息,库存离线服务端通过消费kafka消息把库存变更过程记录到store_update_log表,并将当前的库存值同步至相应的库存表、商品库存保有单位表以及活动商品表的“store_count”字段。
本公开实施例将扣减库存事务从MySQL数据库转移至Redis数据库,将扣减库存请求的读写处理转移到Redis数据库,可以减轻MySQL数据库的处理压力,同时提升了扣减库存请求的读写处理速度,提升了系统整体的下单处理能力,有助于在高并发场景下提升下单环节的效率,保障下单环节的平稳进行,能够为电商平台上的用户提供优质的服务体验。
虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
与上述方法实施例相对应,本公开实施例还提供一种商品库存数据处理装置,其结构如图6所示,该商品库存数据处理装置可以应用于库存服务端,该商品库存数据处理装置可以包括:扣减库存请求获得单元100、第一确定单元200、可扣减库存值修改单元300以及第一发送单元400。
扣减库存请求获得单元100,用于获得订单服务端发送的扣减库存请求,其中,扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量。
第一确定单元200,用于根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值。
可扣减库存值修改单元300,用于在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为第一可扣减库存值与请求扣减数量的差值。
第一发送单元400,用于向库存离线服务端发送第一库存变更消息,其中,第一库存变更消息包括库存唯一键和第二可扣减库存值,以使库存离线服务端根据库存唯一键和第二可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。
可选的,该商品库存数据处理装置还可以包括:第一反馈单元。
第一反馈单元,用于在请求扣减数量不大于第一可扣减库存值的情况下,向订单服务端反馈与扣减库存请求对应的扣减库存成功消息,以使订单服务端根据扣减库存成功消息,创建与目标库存商品对应的商品订单。
可选的,该商品库存数据处理装置还可以包括:库存值回滚单元以及第二发送单元。
库存值回滚单元,用于第一反馈单元向订单服务端反馈与扣减库存请求对应的扣减库存成功消息之后,在获得订单服务端发送的商品订单的创建订单失败消息的情况下,将第一数据库中目标库存商品的第二可扣减库存值回滚至第一可扣减库存值。
第二发送单元,用于向库存离线服务端发送第二库存变更消息,其中,第二库存变更消息包括库存唯一键和第一可扣减库存值,以使库存离线服务端根据库存唯一键和第一可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。
可选的,库存唯一键可以由目标库存商品对应的库存类型参数和库存保有单位标识组成,第一可扣减库存值可以为第二数据库中与库存保有单位标识对应的商品库存保有单位表中第一库存字段对应的库存值。
可选的,库存唯一键可以由目标库存商品对应的库存类型参数、库存保有单位标识以及活动标识组成,第一可扣减库存值可以为第二数据库中与活动标识对应的活动商品表中第二库存字段对应的库存值。
可选的,库存数据可以包括商品库存保有单位表中第一库存字段对应的库存值。
可选的,库存数据可以包括活动商品表中第二库存字段对应的库存值和库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值。
可选的,该商品库存数据处理装置还可以包括:第二反馈单元。
第二反馈单元,用于在请求扣减数量大于第一可扣减库存值的情况下,向订单服务端反馈与扣减库存请求对应的扣减库存失败消息,以使订单服务端根据扣减库存失败消息,向用户端反馈下单失败消息。
可选的,第一数据库为Redis数据库。
可选的,第二数据库为MySQL数据库。
本公开提供的一种商品库存数据处理装置,应用于库存服务端,可以获得订单服务端发送的扣减库存请求,其中,扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对目标库存商品的请求扣减数量;根据库存唯一键,在第一数据库中确定目标库存商品的第一可扣减库存值;在请求扣减数量不大于第一可扣减库存值的情况下,将第一数据库中目标库存商品的第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为第一可扣减库存值与请求扣减数量的差值;向库存离线服务端发送第一库存变更消息,其中,第一库存变更消息包括库存唯一键和第二可扣减库存值,以使库存离线服务端根据库存唯一键和第二可扣减库存值,对第二数据库中与目标库存商品关联的库存数据进行更新。本公开通过在库存服务端实现库存扣减事务处理,可以减轻库存离线服务端的第二数据库的处理压力,提高请求处理效率,有助于在高并发场景下提升下单环节的效率,为电商平台上的用户提供优质的服务体验。
关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
所述商品库存数据处理装置包括处理器和存储器,上述扣减库存请求获得单元100、第一确定单元200、可扣减库存值修改单元300以及第一发送单元400等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在库存服务端实现库存扣减事务处理,减轻库存服务数据库的处理压力,提高请求处理效率,有助于在高并发场景下提升下单环节的效率,为电商平台上的用户提供优质的服务体验。
本公开实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述商品库存数据处理方法。
本公开实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述商品库存数据处理方法。
本公开实施例提供了一种电子设备,电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行上述的商品库存数据处理方法。本文中的电子设备可以是服务器、PC、PAD、手机等。
本公开还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有商品库存数据处理方法步骤的程序。
本公开是参照根据本公开实施例的方法、装置、电子设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、存储器和总线。电子设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
在本公开的描述中,需要理解的是,如若涉及术语“上”、“下”、“前”、“后”、“左”和“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的位置或元件必须具有特定方位、以特定的方位构成和操作,因此不能理解为本公开的限制。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。

Claims (10)

1.一种商品库存数据处理方法,其特征在于,应用于库存服务端,所述方法包括:
获得订单服务端发送的扣减库存请求,其中,所述扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对所述目标库存商品的请求扣减数量;
根据所述库存唯一键,在第一数据库中确定所述目标库存商品的第一可扣减库存值;
在所述请求扣减数量不大于所述第一可扣减库存值的情况下,将所述第一数据库中所述目标库存商品的所述第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为所述第一可扣减库存值与所述请求扣减数量的差值;
向库存离线服务端发送第一库存变更消息,其中,所述第一库存变更消息包括所述库存唯一键和所述第二可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第二可扣减库存值,对第二数据库中与所述目标库存商品关联的库存数据进行更新。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述请求扣减数量不大于所述第一可扣减库存值的情况下,向所述订单服务端反馈与所述扣减库存请求对应的扣减库存成功消息,以使所述订单服务端根据所述扣减库存成功消息,创建与所述目标库存商品对应的商品订单。
3.根据权利要求2所述的方法,其特征在于,在所述向所述订单服务端反馈与所述扣减库存请求对应的扣减库存成功消息之后,所述方法还包括:
在获得所述订单服务端发送的所述商品订单的创建订单失败消息的情况下,将所述第一数据库中所述目标库存商品的所述第二可扣减库存值回滚至所述第一可扣减库存值;
向所述库存离线服务端发送第二库存变更消息,其中,所述第二库存变更消息包括所述库存唯一键和所述第一可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第一可扣减库存值,对所述第二数据库中与所述目标库存商品关联的所述库存数据进行更新。
4.根据权利要求1所述的方法,其特征在于,所述库存唯一键由所述目标库存商品对应的库存类型参数和库存保有单位标识组成,所述第一可扣减库存值为所述第二数据库中与所述库存保有单位标识对应的商品库存保有单位表中第一库存字段对应的库存值。
5.根据权利要求1所述的方法,其特征在于,所述库存唯一键由所述目标库存商品对应的库存类型参数、库存保有单位标识以及活动标识组成,所述第一可扣减库存值为所述第二数据库中与所述活动标识对应的活动商品表中第二库存字段对应的库存值。
6.根据权利要求4所述的方法,其特征在于,所述库存数据包括所述商品库存保有单位表中所述第一库存字段对应的库存值。
7.根据权利要求5所述的方法,其特征在于,所述库存数据包括所述活动商品表中所述第二库存字段对应的库存值和所述库存保有单位标识对应的商品库存保有单位表中第三库存字段对应的库存值。
8.根据权利要求1所述的方法,其特征在于,还包括:
在所述请求扣减数量大于所述第一可扣减库存值的情况下,向所述订单服务端反馈与所述扣减库存请求对应的扣减库存失败消息,以使所述订单服务端根据所述扣减库存失败消息,向用户端反馈下单失败消息。
9.根据权利要求1至8中任一所述的方法,其特征在于,所述第一数据库为Redis数据库,和/或,所述第二数据库为MySQL数据库。
10.一种商品库存数据处理装置,其特征在于,应用于库存服务端,包括:扣减库存请求获得单元、第一确定单元、可扣减库存值修改单元以及第一发送单元,
所述扣减库存请求获得单元,用于获得订单服务端发送的扣减库存请求,其中,所述扣减库存请求包括待扣减库存的目标库存商品的库存唯一键以及对所述目标库存商品的请求扣减数量;
所述第一确定单元,用于根据所述库存唯一键,在第一数据库中确定所述目标库存商品的第一可扣减库存值;
所述可扣减库存值修改单元,用于在所述请求扣减数量不大于所述第一可扣减库存值的情况下,将所述第一数据库中所述目标库存商品的所述第一可扣减库存值修改为第二可扣减库存值,其中,第二可扣减库存值为所述第一可扣减库存值与所述请求扣减数量的差值;
所述第一发送单元,用于向库存离线服务端发送第一库存变更消息,其中,所述第一库存变更消息包括所述库存唯一键和所述第二可扣减库存值,以使所述库存离线服务端根据所述库存唯一键和所述第二可扣减库存值,对第二数据库中与所述目标库存商品关联的库存数据进行更新。
CN202211052929.XA 2022-08-30 2022-08-30 一种商品库存数据处理方法及装置 Pending CN115391364A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211052929.XA CN115391364A (zh) 2022-08-30 2022-08-30 一种商品库存数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211052929.XA CN115391364A (zh) 2022-08-30 2022-08-30 一种商品库存数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN115391364A true CN115391364A (zh) 2022-11-25

Family

ID=84125449

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211052929.XA Pending CN115391364A (zh) 2022-08-30 2022-08-30 一种商品库存数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN115391364A (zh)

Similar Documents

Publication Publication Date Title
KR101959153B1 (ko) 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템
CN111752957A (zh) 一种基于缓存化的销售锁定方法及系统
US8020046B2 (en) Transaction log management
CN110992038B (zh) 交易处理方法、装置及设备
US10147042B2 (en) Synchronization for context-aware complex event processing
US9104471B2 (en) Transaction log management
CN112039970B (zh) 一种分布式业务锁服务方法、服务端、系统及存储介质
CN110784498B (zh) 一种个性化数据容灾方法及装置
CN105243001B (zh) 业务对象的异常告警方法和装置
CN109558453B (zh) 一种区块链数据网络化存储和移存的方法
CN110706105A (zh) 差错标记方法、装置、计算机设备及存储介质
CN111028009A (zh) 可领取业务实体处理方法和装置
US8336053B2 (en) Transaction management
CN111984677B (zh) 资源数据核对方法、装置、计算机设备和存储介质
CN111399753B (zh) 写入图片的方法和装置
CN111581227A (zh) 事件推送方法、装置、计算机设备及存储介质
CN115391364A (zh) 一种商品库存数据处理方法及装置
CN113391933A (zh) 一种处理资金的方法
CN115393029A (zh) 一种专项资金管理方法及装置
CN113592470A (zh) 业务处理方法、装置、电子设备以及存储介质
CN114372052A (zh) 数据变更记录的存储方法和装置、计算机设备、存储介质
CN114629806B (zh) 数据处理方法、装置、电子设备、存储介质及程序产品
CN114625729B (zh) 一种业务数据的存储方法、装置、电子设备和存储介质
KR20240003313A (ko) 데이터 제공 방법 및 그 장치
TW201807600A (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