即时零售业态O2O库存管理设计实践

文|窦英雪 韩光芳

编辑|刘慧卿

一.前言

二.问题与挑战‍

    1.库存同步效率问题

    2.并发超卖问题

    3.共享库存计算问题

三.核心设计方案

     1.同步提效方案

     2.防超卖解决方案

     3.共享库存计算方案

四.回顾总结

一.前言

受疫情影响,越来越多的消费者在线上购买日常消费品,进一步加速了即时消费需求,随着线上订单量显著升高,运维成本成了很大的瓶颈。传统方式由运营人员维护线下、线上库存,库存维护不及时会引发商品缺勤率升高(有库存无法售卖)、缺货出(超卖)等问题,影响用户购物体验。本文主要介绍海博库存系统是如何保证线下线上库存统一、及时、准确的一体化解决方案。

二.问题与挑战

即时零售需求下,线上、线下商品销售采用一盘货模式,即线上、线下商品种类相同,销售同一份库存。为了提升用户体验,线下所有商品种类(标品、箱包品、称重品、组套品等)都能在线上售卖。库存变更的同步流程,如图所示:

线下门店库存在线上三方渠道销售会涉及到库存的计算、转换、同步等多种操作,商家实际运营过程中会出现以下几种问题。

假如门店剩余库存如下列表所示:

商品名称商品规格库存数量
可乐10
酸奶8
鸡翅g1000

1. 库存同步效率问题

场景1:线下门店库存变更同步线上三方渠道

如图所示,用户A在线下门店购买5瓶可乐,付款后库存剩余5瓶。线下库存变更后未及时同步至线上三方渠道,用户B在线上三方渠道购买6瓶可乐,结账后库存剩余4瓶,一共售卖11瓶可乐,线下门店库存发生超卖。

场景2:线上多渠道共享同一份库存,单一渠道库存变更同步其他渠道

如图所示,用户A在到家渠道购买可乐6瓶,付款后剩余4瓶,库存变更后未及时同步至自有渠道,用户B在自有渠道购买8瓶可乐,结账后库存剩余2瓶,一共售卖14瓶可乐,线下门店库存发生超卖。

2. 并发购买超卖问题

场景1:线下门店与线上三方渠道并发购买

如图所示,用户A在线下门店购买酸奶4瓶,同时用户B在线上渠道购买5瓶酸奶,线上线下总共售卖9瓶酸奶,线下门店库存发生超卖。

场景2:线上多渠道间并发购买

如图所示,用户A在到家渠道购买酸奶3瓶,同时用户B在自有渠道购买6瓶酸奶,线上库存总共售卖9瓶酸奶,线下门店库存发生超卖。

3. 共享库存计算问题

线上渠道包括单品、箱包品、多规格品、组套品等多种类商品售卖,由于线下门店、线上渠道共享库存,根据门店库存换算后,如图所示,线上渠道可售库存分别为:可乐(瓶装)10瓶、可乐(提装)1提、鸡翅(500g)2份、可乐鸡翅(可乐【瓶装】*1 + 鸡翅*200g)5份。

用户A在到家渠道购买了1份可乐鸡翅, 其中可乐共享库存关联商品包括瓶装可乐和提装可乐,鸡翅关联商品500g称重鸡翅,所有关联品库存重新计算,计算量大、计算复杂、同时人工维护变更困难。

三.核心设计方案

1.同步提效方案

门店库存发生变更,从门店同步到三方渠道,如果同步时间过长,三方渠道库存不准确,商家很容易发生超卖。我们需要保证同步时间在可控的范围内,避免出现超卖。解决该问题难点及分析如下:

  • 库存变更频繁:高动销商品库存变更频繁,需提高同步效率。

  • 同步数据量大:部分商家为保证库存准确,线下早八晚九全量同步,其他时间增量同步,同步数据量大,需提升同步频次。

  • 三方渠道限频:线上各渠道库存同步存在限频,且限频不一致。

1.1 低延时数据同步方案

由上述问题可知,库存同步数据量大、流程长,会影响库存的同步性能,为了提升性能,将服务进行隔离,拆分如下两个模块,避免大量同步影响库存计算。 
线下库存:主要负责库存数据的校验、过滤
线上库存:主要处理海博库存的计算和渠道同步

鉴于库存同步数据量大,为避免与手动调整库存过程中发生冲突,造成库存错误,我们通过分布式锁实现并发控制;为了提高处理效率,剥离非核心业务操作,通过消息中间件异步保存流水和同步任务,同步操作是基于分布式调度框架多线程并行同步,提升同步频次和效率。

1.2 动态控频同步策略

如前文所述,同步渠道采用分布式调度框架,该框架能让商家所有门店品任务,动态的分配到多个主机jvm中,通过不同的线程组并行执行。在多线程情况下,这些同步任务通过划分不同分片(每个分片为一组同步任务),每个线程执行一个或多个分片的任务,避免重复处理。

如果根据商家维度分配某个分片,在数据量大时,很容易出现任务积压;无限增加分片,可能会触发渠道限频,以上两种场景均会导致同步效率低。

如图所示,我们的策略是根据商家同步任务的情况,均衡分配任务所属分片,实现不触发渠道限频的情况下达到最高同步效率。

1.3 任务优先级同步策略

在实际业务场景中,除线下同步,还有手动调整、同步配置变更、线上销售等多种场景触发库存变更。每种业务场景对库存的影响和及时性要求不同。

举个案例,假如线下同步10个库存至渠道,同时商家在海博将库存手动调整为5,此场景下手动调整的优先级比线下同步高,三方渠道最终库存应该是5,否则会发生超卖。

我们的解决方案是根据特定算法和策略进行打分,分值高的任务优先同步,可实现线下变更同步控制在分钟级延迟,手动调整、线上销售同步控制在秒级延迟。

2.防超卖解决方案

基于前面提到的数据同步方案,虽然解决了同步延迟(控制在分钟级),但是无法解决商品在低库存量时,线下线上同时销售发生超卖的问题,需要保证商品销售最大化的前提下有效控制缺货出。

2.1 动态安全库存设计

  从业务角度考虑,增加安全库存,可降低超卖率。

  • 安全库存:保留固定库存只在线下门店售卖    

  • 线上可售库存 = 线下门店库存 - 安全库存

由于线下门店用户选购时间不固定,无法精准确定商品具体的安全库存值,如何合理设置安全库存?如果粗暴的将商品安全库存统一设置为4,会出现以下两种问题,如图所示:

由上图可知:

8:31-9:00时段,线下门店库存为10,线上可售库存=总库存(10)- 安全库存(4), 此时线下一次卖出8个,在库存同步生效之前,加上线上可售库存6,理论上可能超卖个数=8+6-10;

10:01-10:30时段,线下门店库存为10,线上可售库存=总库存(10)- 安全库存(4),此时线下一次卖出2个,加上线上可售库存6,理论上线下门店和线上三方渠道一共销售库存个数=2+6,其中有2个库存在线上缺勤,无法售卖。

以上计算方法是在最理想的状态下进行的计算,在实际计算中,动态安全库存 ≈ 线下时段销量。

此方案通过销量预测算法,对线下门店各时段销售库存进行预测,动态设置安全库存。

2.2 同步系数设计

基于以上动态安全库存设计,能够降低线下线上同时销售产生超卖问题,但无法避免渠道间并发销售产生的超卖,通过增加同步系数,按比例同步各渠道可售库存,降低超卖率,保证商品销售最大化,如图所示:

  • 同步系数:线上可售库存占用线下门店库存比例

  • 线上可售库存 = 线下门店库存 * 同步系数

3.共享库存计算方案

线下涉及商品种类繁多(标品、箱包品、多规格称重品、组套品等),为了提升用户体验,需保证所有商品种类在线上标品化销售,并准确计算共享库存的商品库存。解决该问题难点及分析如下:

  • 计算量大:线下门店库存发生变更、线上销售扣减库存,关联共享库存商品都需重新计算,计算量大且极易发生并发。

  • 时效要求高:所有共享库存商品库存需保证同时变更,否则会出现库存不准确。

3.1 库存计算引擎

    • 预占库存:线上销售未配送商品数量

    • 线下可用库存:共享库存可用商品数量(线下门店库存-共享库存商品总预占)

    • 可售库存:可对外销售的商品数量

    • 现货库存:线上商品总数量(可售库存 + 预占库存)

针对计算量大,我们设计了可扩展、可编排的库存计算引擎,如图所示:

该方案支持标品、箱包品、称重品以及共享库存关联品的并行计算,保证库存变更的时效性、准确性。

库存变动中,最关键的节点就是线上销售扣减库存,扣减规则如下:

    • 预占:+预占,-可售

    • 调整:-预占,+可售

    • 换货:【订单品】-预占,+可售,【换货品】+预占,-可售

    • 出库:-预占,-现货

    • 取消:-预占,+可售

为保证订单处理流程性能和效率,线上销售扣减库存采用mq异步消息方式处理,由于mq无法保证与实际流程一致,按照错误顺序处理库存,会导致库存数据错误。我们设计了订单状态机,在扣减库存前,进行前置状态校验,避免此问题。

3.2 订单状态机设计

订单状态机主要包括订单预占、订单调整、订单换货、订单出库、订单取消等节点,如图所示:

为方便扩展,通过配置方式维护各节点的前置状态,扣减库存前根据当前节点状态进行处理。

四.回顾总结

基于以上即时零售场景存在的痛点,我们在分析、梳理、解决这些的问题过程中沉淀了如下的库存系统架构:

库存架构从多方面进行考虑设计:

服务隔离方面,拆分线下、线上库存两个模块,线下库存负责接收ERP库存数据,并进行数据过滤、清洗,线上库存支持业务操作、库存计算和渠道数据同步。

同步效率方面,设计了动态控频同步组件,针对不同渠道动态控制同步频率,保证渠道同步效率的最大化。

拓展性方面,设计了库存计算引擎,根据不同业务场景可编排计算流程,同时支持新业务场景的拓展。

准确性方面,该架构支持全链路数据监控,保证数据在各环节的准确、可追溯;

以上为即时零售库存系统的整体设计,我们通过合理的架构设计保证了库存在整体业务流程的实时、准确、统一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值