需求背景
目前ebay在线listing已超过4千多万,导致自动补货消耗的性能过大,需优化
需求描述
动态库存变化和listing变化由两个定时调度统一改为策略消费机制:
1.sku变化不再由每个店铺单独查询变化的listing改为一次性按sku查询出涉及到的所有店铺和listing,插入到待补货队列
2.listing同步变化不在按每个店铺判断对应的listing是否需要处理自动补货,而是直接插入到待补货队列
3.生产端按店铺推入redis队列4.消费端获取redis队列处理补货逻辑将符合条件的推入补货队列或发货处理时间队列
【说明】:由于转测后,开发并未配置增量补货服务和策略分解服务,并未实际自测,则是边测试边调整,所以实际测试时间为:12.19-12.23,内含开发解决问题和重新验证时间,12.26则进行补货验证执行操作。
验证如下:
与开发沟通技术方案时,通过对应制定的补货策略:
(1)会首先通过补货策略对listing(包含店铺)进行同步,
(2)之后将listing数据同步至待补货队列中,
(3)然后以listing维度找寻对应ERP库存(SKU维度),且库存时间和补货时间为同一时间内的库存进行增量补货
(4)通过策略服务的生产、消费端对状态进行更新,若status=1(同步成功),则将补货策略中的补货数推入补货队列。若status=2(同步失败),则可能与策略条件有过滤
测试实际验证如下:
1、验证1:对正常补货策略进行正确补货:
进行三个场景的补货策略:
(1)策略id:43 支持直发listing自动补货
设置补货策略条件页面:
测试数据:375099354102、375099621657
可售数:SQL参考:
select * from m_ebay_listing where ProductId in ('375099354102','375099621657')
select * from m_ebay_listing_sub where ProductId in ('375099354102','375099621657') #--- 可售数 4 5
可用库存:
SQL参考:select * from p_product_warehouse_dynamicinventory where CustomerId = 1 and sku in ('14599418','14994484') limit 10; ##--动态库存 可用库存 2 8
(2)策略id:40 支持虚拟海外仓自动补货
设置补货策略条件页面:
测试数据:375075790554 、375089634230
可售数:SQL参考:
select * from m_ebay_listing where ProductId in ('375075790554','375089634230')
select * from m_ebay_listing_sub where ProductId in ('375075790554','375089634230') #---可售数 1 2
可用库存:
SQL参考:select * from p_product_warehouse_dynamicinventory where CustomerId = 1 and sku in ('3285250','1402139'); ##--动态库存 --可用库存 1 2(3)策略id:39 支持真实海外仓自动补货
设置补货策略条件页面:
测试数据:315026397353 、315026603484
可售数:SQL参考:
select * from m_ebay_listing where ProductId in ('315026397353','315026603484')
select * from m_ebay_listing_sub where ProductId in ('315026397353','315026603484') #--- 可售数 25 30
可用库存:
SQL参考:select * from p_product_overseaswarehouse_dynamicinventory where CustomerId = 1 and sku in ('17527185','16694617') and warehouseid =212 ##-- 动态库存 --可用库存59 25
进行listing同步:
##--直发listing 20700
SQL参考:select * from m_ebay_listing_productid t1 where t1.CustomerId = 1 and t1.ProductId in (375099354102,375099621657);
##--虚拟海外仓 20700
SQL参考:select * from m_ebay_listing_productid t1 where t1.CustomerId = 1 and t1.ProductId in (375075790554,375089634230);
##--真实海外仓 7745
SQL参考:select * from m_ebay_listing_productid t1 where t1.CustomerId = 1 and t1.ProductId in (315026397353,315026603484);
此时,对应补货策略数据根据listing(含店铺) -SKU 维度进入待补货队列(mgdb进行展示):
可将对应动态库存表的最新更新时间(lastModifiedTime),与对应直发、海外补货调度表区间时间(NextBeginTime、NextEndTime)进行同一时间的同步:
即动态库存表的最新更新时间能够落在其补货调度表的区间范围内:
【动态库存表 - 以SKU维度】
直发动态库存表:最新更新时间如下
海外动态库存表:最新更新时间如下:
进行增量补货服务调度:
EbayIncrementReplenishment-dev
EbayOverseasIncrementReplenishment-dev
【增量补货表 - 同步待补货队列数据】
SQL参考:select * from sys_syncdata where BusinessType = 'EbayIncrementReplenishment';

SQL参考:select * from sys_syncdata where BusinessType = 'EbayOverseasIncrementReplenishment';
调度策略分解服务:
GetReplenishmentStrategyJob_Producer_dev_ebay
(1)查看直发场景:对应店铺:20700
虚拟海外仓(策略id:40),待补货队列正常补货
之前直发listing(策略id:43)的待补货数据为正常:
查看对应的补货队列:
虚拟海外仓 - 策略id:40,查看均有正常进入补货队列
直发listing - 策略id:43,查看均有正常进入补货队列
【该场景存在bug】(2)查看海外仓场景:对应店铺:7745
查看补货设置的策略条件:
查看待补货队列的展示情况:
平台id:315026397353 对应的可售数:25 可用库存:24,满足了却标识为:策略过滤,不符合
平台id:315026603484 对应的可售数:30 可用库存:58,满足一条策略即可
查看对应的补货队列:真实海外仓 - 策略id:39
预期结果:满足策略条件理应进入2条数据
实际结果:实际只进入1条数据【存在问题,已与开发沟通:开发记录错误,重新修复重跑数据】
重跑真实海外仓补货策略之后:
待补货队列成功更新:
补货队列:均满足预期结果进入补货队列
二、异常场景:
1、虚拟海外仓-策略id:40
对应可售数:
对应可用库存:策略设置条件过滤并不符合实际可用库存的逻辑,则会报策略过滤报错提示
对应策略物品所在国为:澳大利亚,不符合补货业务实际,会自动策略过滤错误;实际店铺为:7745,英国,海外仓对应物品所在国理应为:英国