电子导盲仪
后端产品体系的旧功能出了问题,只能在技术协助下,慢慢摸索追溯旧逻辑,搞清楚才能谈得上优化。
本文主角是一个SaaS模式的“后台发货系统”,对接美团等O2O平台的订单。目的是将各销售渠道的订单统一管理,完成发货。
既然统一发货,就少不了做统一的库存同步到销售渠道的机制。这样才能确保各平台数据互通,良性运营。 本次案例就来自库存价格同步机制这块的优化。
01 产品模型平面音响
整个业务模型大概是这样的:
eoa
该图表自下往上,分别是:
•最下是“商户WMS”:作为真实的门店和门店商品库存、价格的来源。(因为是O2O,所以库存就来自实体门店)。
•图中间是SaaS系统的“商户商品后台”:生成平台+线上门店+商品维度的数据清单,以衔接下端WMS和上端平台后台的数据。
•最上面是O2O平台的后台:各渠道后台通过统一接口,统一在发货系统中对接,节约成本,数据互通。双极化高频头
需注意的是:由于是O2O,同一商品,在不同平台的不同门店,价格可能不同。所以若有n个实体店,m个商品的话,那么在每个平台,商户最多就要维护n*m 条数据。
若w个销售渠道(平台),那么最多就要维护n*m*w条数据。这个客观现实就为本次事件埋下伏笔。
02 核心功能:同步库存、价格给第三方平台功能基于模型,所以正向功能就是:库存价格变化,则同步到对应的各个平台。触发条件除了WMS增量自动同步之外,还需要手动触发同步的机制。
比如,美团打折活动结束,就要触发同步WMS的价格进行恢复。若此时不具有触发增量的条件,就需要手动触发。
于是增加了批量、单个<;同步到平台>的功能。
至此,触发同步的条件就确定了:单个同步、批量同步、增量自动同步。
功能流程如下图:
03 技术实现机制
总体机制:不同平台的商品,从WMS搜集待同步的数据,然后集中后发车完成同步。
第一期的方案是采用“同步池”,汇集所有的同步请求。即:将来自于WMS 的定时增量推送、页面批量操作、单个操作的同步请求数据,集中在同步池中。
再按照各自的去向,寻对应的平台接口,此时需服从各平台的限流规则。
时子环
限流规则:就是平台限制接口被请求的次数。比如美团限制每天只支持10万次的同步请求。
整理后的技术实现流程图:
04 出现的问题
主要有三个问题表现:同步池中的数据量会很大;经常量丢数据导致同步失败;用户等待时间过长。
热流道系统1. 数量大的原因
1)基数大
由于各个平台和门店按照每个商户有200个连锁店,每个商户有2000个商品,那么就又有20万条基础数据。
若同时使用3个平台,最大就有60万基础数据。
2)触发次数多
假设不同平台和门店在正常销售,那么WMS的库存就会不停变化,于是就会不停地增量推送数据,请求同步到平台。
同时,商户又在单个或批量进行同步。商户为确保万无一失还会选择重复操作同步。
2. 丢数据的原因
•三方平台限流,提交过多的数据就被限制不执行。若平台不反馈失败数据,那么失败后我们也不知道遗漏了哪些。
•数据量过大,占用线程挤满,资源不够。