涉及实体货物的电商系统均需要进行库存管理。

一般来讲,库存管理的核心基础为减少或避免超售(取决于货物的价值以及稀缺程度),更高阶的库存管理相关需求可能涉及到发货时效、仓位自动分配、多仓均衡、物流成本等方面。

一、 库存交互的几种场景

以下几种场景涉及对库存进行操作:

采购/进货/生产销售/预售退货/换货盘点调货

以上操作可能会有并发场景,所以在设计相关数据库操作时要特别考虑安全的锁操作。

二、 库存的三个层级

为了区分几大不同场景的库存操作,通常将库存分为销售层、调度层、仓库层三种。

2.1 销售层库存

销售层库存主要关注面向终端顾客的库存变动及配置,通常有以下几个概念:

可用库存:当前可以售卖的库存;订单保留库存:当订单尚未正式付款生成时,为此单按照一定时限保留的库存,订单超时取消时随之释放;已售库存:已经生成了正式订单的库存;活动库存:大型促销活动时为了保证活动的库存准确性以及独立性,通常会单独为活动设立一个专属库位,称为活动库存;虚拟库存/预售库存:当商品暂未拥有现货时,可以设立虚拟库存来安排预售活动;安全库存/锁定库存:针对某些特殊的库位(例如与实体门店共享库存的库位),可以设立安全库存来避免某一渠道将库存全部售空,触及安全库存以后的销售需要经过审核流程方可流转;

2.2 调度层库存

调度层库存更多关注于仓库-订单之间以及仓库-仓库之间的库存分配及流转,通常有以下概念:

账面库存:仓库中实际拥有的库存总量;可用库存:可以用来满足顾客订单或者转货单的库存数量;在途库存:工厂已生产,或已从外部采购,但尚未抵达仓库的库存,或仓库之间转货操作中在途的库存;不可售库存:由于质量或其它原因不可用来对外售卖的库存;已用库存:已经被分配到具体销售单上的库存;

2.3 仓库层库存

仓库层库存是以仓库为单位进行库存管理:

可用库存:本仓库可以用来立即满足OMS下发订单的库存;已占用库存:本仓库已经被顾客订单或者转货单占用的库存;不可用库存:由于质量问题或者是顾客退货订单退回的,尚未准备好再次销售的库存;已出库库存:已经交由快递/物流并且成功出库的库存;

三、 库存的流动同步及更新

库存一般有两个流动方向,从顾客终端流向仓库,或从仓库反向流到电商前端。前者为正常销售情况下的扣减,后者则为转货、进货后向前端系统推送可用库存的流动。

由于现代的电商管理系统常常涉及多种不同组件(例如前端页面、前端CMS、订单处理中台、OMS、SAP、WMS等等),库存的同步更新需要妥善处理好多系统之间的同步问题,否则很容易出现超卖的情况。

通常库存更新及流动的架构会采取分布式事务以确保各个系统的同时更新与同步。目前主流的消息队列解决方案基本都可以确保终端一致性来达成库存消息的有序流动以及同步更新。

另外对于一些实时性要求不太高的库存场景也可以使用异步二次确认的方式来确保一致性。

后续待有空继续更新。

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: