电商超卖,从业务到设计
编辑导语:超卖这一概念的定义可以从不同层面进行阐述,比如平台层面、渠道层面、仓库层面等。而假设因超卖导致订单难以履行,则容易让用户体验“打折”。为什么有时电商超卖的现象会发生?可以从哪些角度来降低超卖导致的风险?本篇文章里作者就此做了解读,一起来看一下。
随着电商竞争日益激烈,平台对于入驻商家的服务和履约有了越来越严格的要求,而由超卖造成的订单难以履约的问题,会严重影响客户的购物体验,平台对此的处罚也是非常严格。
以主流电商平台为例:
- 淘宝平台上,如果入驻商家未能在规定时间内发货,客户可以申请延时发货赔偿;
- 唯品会平台,入驻品牌商如果无法在规定时间内发货,需要向平台赔偿,超卖严重者,唯品会平台会对入驻的品牌方进行暂停销售档期处罚;
- 得物平台,如果订单成交后,卖家不能在规定时间内发货,也会扣除卖家保证金,并以现金余额形式补偿给买家。
可以看到,为了给消费者带来更好的购物体验,平台对商家的处罚也较为严重。
电商作为如今零售企业、品牌方的主要流量入口,电商特有的销售模式和大流量、高并发的场景,使得商家的超卖风险越来越高。本篇文章,我们就来聊聊超卖,这个让大部分商家比较头疼的难题。
一、什么是超卖
对超卖的定义,不同的供应链角色是不同的。
从平台来看,只要商家无法在规定时间内发货,都被视为超卖。而从零售商家来看,对于运营角色来说,如果销售的订单超过了其可以销售的数量,就会视为超卖,这种超卖,通常称为渠道超卖;而对于仓库角色来说,当销售的订单,超过了仓库存放的可以发货的库存数量时,才会被称为超卖,即为实物超卖。
从图中可以看到,渠道超卖,并不意味着实物商品无货可发,可能有一部分商品分给了其他渠道进行售卖。此时,订单是可以进行正常的履约,因此,对于渠道超卖,应当尽量避免。而一旦出现实物超卖,就意味着仓库中没有足够的实物去发货,此时只能重新生产,这种情况下,会严重影响订单的履约,因此应当受到足够的重视。
二、为什么会超卖
做过零售企业的朋友应该都知道,库存周转率,是一个非常重要的指标,而在当前这个互联网时代,流量入口的来源渠道非常多,如何更好地利用这些流量入口,最大程度的实现库存周转,是每个企业追求的目标。
传统的零售业,大多由门店进行销售,此时货品都存放在货架上或者是门店的储物间里。在这种销售模式下,A门店的商品,大部分情况下,都是由A门店自己进行销售,我们将这种销售模式,称为独享库存销售模式,如下图:
从图中可以看到,独享库存销售模式下,每个门店/销售渠道可以销售的商品数量和可以发货的商品数量,是对应好的,且由于线下交易是即时成交的交易模式,所以基本不会出现超卖的情况。
而这种模式同样存在很严重的弊端,由于单个门店的客流量有限,因此库存的利用率和周转率都非常低。
而在电商多渠道销售场景下,为了提高库存的利用率和周转率,大部分商家都会采用共享库存销售模式,如下图:
可以看到,在共享库存销售模式下,同样的100件库存,既可以通过A店铺售卖,又可以通过B店铺售卖,大大地提高了库存的利用率。
此外,共享库存销售模式下,商家为了达到最大化销售,在店铺销售商品时,往往会放大库存进行销售。仓库中的100件库存,在给店铺销售时,天猫店最多可以销售80件,京东店最多可以销售60件,最终展示在销售渠道上的库存是140件。
基于电商运转的共享库存销售模式,虽然有效地提高了零售商家的库存使用率和周转率,但也带来了很多超卖的问题:
1)由于电商采用线上交易,订单只是交易的开始,订单从成交到履约是有一段时间的时间差,而共用一盘货进行销售的共享库存销售模式,如果无法及时地将最新的库存情况反馈到各个销售渠道,就会增加库存超卖的风险。
2)共享库存销售模式下,为了增加销售机会,库存会放大比例进行同步,在库存充足的条件下,可以使得企业销售最大化,但是在库存深度较低时,销售最大化就变成了超卖的风险。因此如果没有有效地手段进行控制,同样会增加超卖的风险
3)电商在进行大型促销活动时,往往会在短时间内会有大量的流量涌入,在这种场景下发生的高并发超卖问题,同样会增加超卖的风险。
三、如何降低超卖的风险
基于以上增加超卖风险的场景,如何在满足业务最大化销售需求的前提下,尽量降低库存超卖的风险,正是我们需要解决的问题。
1. 实时的库存同步
为了及时将最新的库存量同步到各个销售渠道,订单下单以后,系统需要根据订单购买的商品进行库存占用,并通过库存同步,将最新的可销售库存同步至各个销售渠道。
2. 安全库存
共享销售模式下,在库存足够时,仓库中有足够的的库存进行订单履约,此时可以将库存放大,追求最大化销售。而当仓库的库存数量很少时,即便超卖一件商品,都可能出现无法发货的情况。
因此,当库存数量较低时,应该将控制超卖风险放在第一位。通过针对不同的渠道设置不同数量的安全库存,当库存低于一定数量以后,系统会按照安全库存数量,将一部分销售渠道的对应商品下架,仅留下某一个渠道进行尾货的售卖。
此时销售模式由共享销售模式转变为独享销售模式,可以大大降低超卖的风险。
3. 库存同步队列
库存同步虽然可以实现实时反馈库存情况至各个销售渠道,但是在实际的执行过程中,仍然碰到了一些问题
1)库存同步频率的问题。
当两个不同的销售渠道同时下单同一件商品时,如果针对两个订单的库存异动,都即时计算库存,并即时库存同步(同步过快),此时由于库存占用和计算的先后关系,就会导致,第一笔订单触发的库存异动计算出来的库存,是高于实际系统可以销售的库存。
在这种并发的场景下,即时库存同步,就会产生超卖的风险。而库存同步的过慢,又会导致库存无法及时同步至各个销售渠道,导致销售渠道的库存不准确,发生超卖。
2)库存同步频次的问题。
由于在与各个销售渠道进行库存同步时,采用的是全量库存覆盖的处理方式,如果针对每一次的库存异动,都去执行一次库存同步,就会出现,同一个店铺的连续下单同一件商品;系统无法对库存及时处理,导致在处理的时间差内,第一笔订单触发的库存同步计算出来的库存,是高于实际可以销售的库存,此时做库存同步,就会覆盖掉销售店铺真实的可销售库存,从而发生超卖。
通过库存同步队列来控制库存同步的频率和频次,提高库存同步的计算库存准确性。
每一次库存发生异动时,都会向库存同步队列中插入一条数据,当同一个店铺同一个商品发生库存异动,重复进入同步队列时,系统会自动将新插入的数据进行屏蔽,从而控制库存同步的频次。
系统在执行库存同步时,会将n分钟以前进入队列的数据进行处理,并按照系统当前的库存情况,计算各个渠道的实际可用库存,通过这种方式,可以控制库存同步的频率,从而在发生多渠道并发时,有效提高库存的计算准确性。
4. 业务上进行避免
虽然以上三种方式可以有效降低日常销售中的库存超卖的风险,但是针对电商大促,仍然存在超卖风险。
因此,大促时,在流量较高的场景下,通过在业务上将库存同步关掉,针对大促的店铺进行定量库存销售,将共享销售模式转为独享销售模式,仍是避免超卖最为保险的手段。
四、发生超卖后如何处理
当出现渠道超卖时,为了避免继续销售发生实物超卖,可以在其他渠道库存同步的时候,将超卖的订单需要预留的库存先扣减掉,剩余的数量进行库存同步。如果已经出现实物超卖的话,系统是无法处理的,只能通过人为干预,由运营和客户协商解决,或者另行生产。
以上我们讲解了部分电商超卖的场景,并针对场景,提出了一部分解决思路。超卖的问题,仍然还有其他场景会发生,发现问题,解决问题,正是我们的价值所在。如果大家还有其他超卖发生的场景,欢迎在评论区留言探讨。
本文由 @没梦想的咸鱼 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于 CC0 协议
相关文章:
电商超卖,从业务到设计
编辑导语:超卖这一概念的定义可以从不同层面进行阐述,比如平台层面、渠道层面、仓库层面等。而假设因超卖导致订单难以履行,则容易让用户体验“打折”。为什么有时电商超卖的现象会发生?可以从哪些角度来降低超卖导致的风险&#…...
【MySQL】表的约束
表的约束 表的约束1. 空属性2. 默认值3. 列描述4. zerofill(自动补零)5. 主键—primary key5.1 复合主键 6. 自增长—auto_increment7.唯一键 --- unique8. 外键 --- foreign key…reference9. 综合案例 表的约束 真正约束字段的是数据类型,…...
【计算机网络】第一章 概述(下)
文章目录 第一章 概述1.5 计算机网络的性能指标1.5.1 速率1.5.2 带宽1.5.3 吞吐量1.5.4 时延 1.6 计算机网络体系结构1.6.1 常见的体系结构1.6.2 分层的必要性1.6.4 体系结构中的专用术语 1.8 习题 第一章 概述 1.5 计算机网络的性能指标 常用的 计算机网络 的性能指标有以下 …...
化工园区人员全过程轨迹化安全解决方案
1、项目背景 化工园区化工厂是生产安全重点单位,对人员定位管理需求强烈。对人员定位主要需求是:一般区域人数统计、人员轨迹、重点区域人员实时精准定位。 华安联大安全化工园区人员全过程轨迹化安全解决方案通过人员实时定位管理、移动轨迹追溯、险情…...
Java泛型中的T、E、K、V、?通配符,你确定都了解吗?
目录 前言 泛型带来的好处 泛型中通配符 小结 前言 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操…...
Jenkins部署及使用
Jenkins 1.定义 1.Jenkins是一款开源CI/CD软件,用于自动化各种任务,包括构建、测试和部署软件 1.CI/CD 1.CI:持续集成(Continuous Integration) 1.协同开发是目前主流的开发方式,一般由多位开发人员同时处理同一个应用的不同模块…...
UML类图(二)
相信希望,相信自己 上一章简单介绍了 设计模式的原则(一), 如果没有看过,请观看上一章 本文参考文章: 常见UML符号详解 UML (Unified modeling language) 统一建模语言,是一种用于软件系统分析和设计的语言工具, 它用于帮助软件开发人员进行…...
【IoU全总结】GIoU, DIoU, CIoU, EIoUFocal, αIoU, SIoU,WIoU【基础收藏】
🥑 Welcome to Aedream同学 s blog! 🥑 并不存在效果一定优秀的IoU,需要结合自己的网络、数据集试验。 不想深究原理可直接跳转总结。文内公式均为手打,非图片,方便查看 文章目录 L1 Loss,L2Loss࿰…...
docker 安装 mysql
第一步,安装docker ,确保centos环境符合要求,有网 yum install docker -y 第二步:拉取mysql 首先可以先查询支持的mysql: search # 拉取镜像 docker pull mysql # 或者 docker pull mysql:latest # 以上两个命令是一致的&…...
Java 流程控制之 for 循环
Java语言中的for循环是一种常用的循环结构,用于重复执行一段代码,直到指定的条件不再成立。在本篇博客中,我们将深入探讨Java中的for循环,包括其语法、用法和示例。 一、for循环的基本语法 for循环的基本语法如下: …...
Kubernetes那点事儿——暴露服务之Ingress
Kubernetes那点事儿——暴露服务之Ingress 前言一、ingress负载均衡器Ingress Controller路由规则Ingress 二、Ingress Controller三、案例 前言 在 k8s 集群中,如果我们将服务暴露出来,提供访问,可以使用Nodeport方式,但是Nodepo…...
八股文总结
文章目录 项目介绍1.不动产项目项目难点机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 系统流程图 2.图书项目技术栈ShiroMybatisMyBatis:Mybatis Plus: 面试问题 Java基础基本数据类型反射接口和抽象类异常代理模式1. 静态代理2. 动…...
【浅学 MyBatis 】
MyBatis 笔记记录 一、MyBatis基础1. MyBatis介绍及快速入门2. 相关API介绍2.1 Resources2.2 SqlSessionFactory&&SqlSessionFactoryBuilder2.3 SqlSession 3. 映射配置文件4. 核心配置文件4.1 规范写法4.2 参数和返回类型_起别名 5. 引入Log4j 二、MyBatis进阶1. 接口…...
Windows版Redis安装
最近电脑重装了系统,很多常用的软件、应用都没有了,所以需要重新装,所以想借此机会把一些安装比较复杂的应用的安装过程,重新记录一下,方便后续, 安装 Redis默认只有Linux的版本,但是微软为了更…...
Flume面试题二十道
什么是Apache Flume? 参考答案:Apache Flume是一个可靠、分布式、可扩展的日志收集和聚合系统。它用于将大量的日志数据从不同的源(如Web服务器、应用程序日志)传输到目标(如Hadoop、HBase)中进行存储和分析…...
单链表OJ题:LeetCode--138.复制带随即指针的链表
朋友们、伙计们,我们又见面了,本期来给大家解读一下LeetCode中第138道单链表OJ题,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! 数据结构与算法专栏:数据结构与算法 个 人…...
Chapter7: SpringBoot与数据访问
尚硅谷SpringBoot顶尖教程 1. JDBC 1.1 依赖及配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency><groupId>mysql</groupId…...
【Sqlite3】maraidb和sqlite3部分命令操作区别
maraidb和sqlite3部分命令操作区别记录 1.安装sqlite3 在实现我的视频点播系统项目时,我尝试封装了两种数据库的调用逻辑 mysql(maraidb)sqlite3 这里封装sqlite3的原因是,sqlite3主要针对的就是嵌入式数据库,其性能…...
Linux中新建用户使用sudo问题
文章目录 sudo问题 sudo问题 sudo:权限提示指令,当使用sudo这条指令时,会将普通用户的权限提升为root权限 但是在命令行新建用户,这个用户使用sudo指令对一条指令提权是用不了的 这个用户没有在sudoers file这个文件中ÿ…...
Sentinel源码分析-ProceesorSlotChain调用链及树状资源节点
Sentinel 实现流控,隔离,降级等功能,本质要做两件事: 数据统计: 统计某个资源的访问数据(QPS,RT(响应时间),异常比例)等信息规则判断: 判断流控规…...
springboot 连接 kafka集群(kafka版本 2.13-3.4.0)
springboot 连接 kafka集群 一、环境搭建1.1 springboot 环境1.2 kafka 依赖 二、 kafka 配置类2.1 发布者2.1.1 配置2.1.2 构建发布者类2.1.3 发布消息 2.2 消费者2.2.1 配置2.2.2 构建消费者类2.2.3 进行消息消费 一、环境搭建 1.1 springboot 环境 JDK 11 Maven 3.8.x spr…...
Nacos配置中心使用(Spring Cloud版)
目标 向项目中集成Nacos配置。原项目是一个SpringBoot项目。这里假设我们无法修改原有项目的SpringBoot版本。 注意 在不动SpringBoot版本的前提下,根据SpringBoot的版本,确定Spring Cloud和Nacos版本。Nacos版本其实就是Spring Cloud Alibaba版本。在…...
STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)
STM32F407硬件I2C实现MPU6050通讯 文章目录 STM32F407硬件I2C实现MPU6050通讯cubeide设置写操作与读操作函数实现复位,读取温度,角度等函数封装mpu6050.cmpu6050.h代码分析 DMP移植1.修改头文件路径为自己的头文件路径2.修改I2C读写函数为自己mcu平台的读…...
HTML5 语义元素(一)页面结构
本篇主要介绍HTML5增加的语义元素中关于页面结构方面的,包含: <article>、<aside>、<figure>、<figcaption>、<footer>、<header>、<main>、<nav>、<section>等元素。 目录 1. 语义元素介绍 1.…...
嵌套滚动实践:onInterceptTouchEvent与NestedScrolling【实用为准】
嵌套滚动:内外两层均可滚动,比如上半部分是一个有限的列表,下半部分是WebView,在内层上半部分展示到底的时候,外部父布局整体滚动内部View,将底部WevView拉起来,滚动到顶部之后再将滚动交给内部…...
Redis入门 - 5种基本数据类型
原文首更地址,阅读效果更佳! Redis入门 - 5种基本数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/five-base-datatype.html 说明 在我们平常的业务中基本只会使用到Redis的基本数据类型(String、List、Hash、Set、…...
mybatis-plus用法(一)
MyBatis-plus 是一款 Mybatis 增强工具,用于简化开发,提高效率。下文使用缩写 mp来简化表示 MyBatis-plus,本文主要介绍 mp 整合 Spring Boot 的使用。 (5条消息) mybatis-plus用法(二)_渣娃工程师的博客-CSDN博客 1…...
源码安装包管理
1. 源码包基本概述 在linux环境下面安装源码包是比较常见的, 早期运维管理工作中,大部分软件都是通过源码安装的。那么安装一个源码包,是需要我们自己把源代码编译成二进制的可执行文件。 源码包的编译用到了linux系统里的编译器,通常源码包…...
Vue|获取表单数据
在Vue中获取表单数据有多种方式,具体取决于你使用的是哪种表单元素和你的需求。 1. 单个表单元素: 如果你只需要获取单个表单元素的值,可以使用v-model指令将表单元素的值绑定到Vue实例的一个属性上。例如: <input type&quo…...
微信小程序入门学习02-TDesign中的自定义组件
目录 1 显示文本2 自定义组件3 变量定义4 值绑定总结 我们上一篇讲解了TDesign模板的基本用法,如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 1 显示文本 官方模板在顶部除了显示图片外,还显示了一段文字介绍。文字是嵌套在容器组件里…...
audio player wordpress 使用方法/bt磁力种子
一、background-attachment属性在CSS中,使用背景附件属性background-attachment可以设置背景图像是随对象滚动还是固定不动。语法:background-attachment:scroll/fixed;说明:background-attachment 属性只有2个属性值。scroll表示背景图像随对…...
wordpress配置文件是/十大基本营销方式
time和datetime的区别 之前,我们已经介绍过了python中的datetime模块,time的功能在很大程度上和datetime比较类似,也是用于处理日期和时间的。但是如果你要处理日期的话,使用datetime要更好。因此建议不需要通过time来处理日期&a…...
美女做直播网站有哪些/关键词数据分析工具有哪些
Apache Kafka是一个高性能、高可用性、冗余的流消息平台。Kafka的功能很像发布/订阅消息系统,但具有更高的吞吐量、内置分区、复制和容错能力。对于大规模消息处理应用程序来说,Kafka是一个很好的解决方案。它通常与Apache Hadoop和Spark Streaming一起使…...
哪个网站做图片外链/青岛seo整站优化
作者:TerryLee 来源:博客园 时间:2008-09-19 阅读:3357 次 原文链接 [收藏] 摘要:微软在.NET 3.5中推出了LINQ,现在各种LINQ Provider满天飞,TerryLee在老外站点上收集了一份LINQ Provi…...
做棋盘游戏辅助的网站/网络营销的含义的理解
2019独角兽企业重金招聘Python工程师标准>>> 需求: 1.可以通过数据库配置cronExpression表达式,动态修改执行时间 2.不修改服务器环境支持集群架构:即保证集群环境下单实例运行 3.实现业务上的实时开启/停止控制功能 第一步&#…...
哪个网站可以做身份核验/上海网络seo公司
文章转自:http://blog.csdn.net/u012385432前面的几篇文章中提及了有关.Pak文件和文件下载的部分,这两部分组合起来,其实就是我们的资源热更新了.当然代码的热更新不在这个讨论范围内.代码的热更新的话就更加麻烦了.这次讨论的只限资源的热更新...前面文章链接:1.下载文件链接2…...