订单库存回补方案与实现思路

一、思路

1.如何回补?记录需要回补的数据,进行回补。

2.记录什么数据?单出入库分为两个阶段:A.订单解析获取要扣减的库存。B.扣减库存。所以我们按这两个阶段,分两种类型数据:订单数据/库存修改数据

3.如何记录?A阶段失败则记录订单数据,B阶段失败则记录库存修改数据

4.如何回补?查询不同类型的待回补数据,进行回补。

5.回补失败怎么办?回补失败则重试一次

6.如果仍然失败呢?仍然失败则说明数据异常,不再尝试回补。留待开发人员观察数据原因

 

二、实现

A阶段

1.如订单解析阶段失败,或者希望直接添加到回补记录中不再处理,保存数据。类型为【订单出入库】,状态为【失败状态】或【待回补状态】

2.通过利用监听器等方式,不断轮训查询回补记录中的待回补【订单数据】

3.转换订单数据格式,并调用订单出入库服务,进行消费

4.如回补阶段失败一次后,更新该回补记录为【失败状态】,并等待下次再次尝试回补

5.如再次失败,则不再回补。并将该记录标记为【异常状态】,不再尝试回补,由开发人员观察失败原因

 

B阶段

1.如库存修改失败,保存数据,类型为【库存修改】。状态为【失败状态】

2.查询回补记录中,类型为【库存修改】,状态为【失败状态】的数据

3.尝试重新修改库存。

4.如再次失败,则更新该记录状态为【异常状态】,不再尝试回补。由开发人员观察失败原因

 

流程图如下:
 

 

三、总结

订单回补是一种思想,我们可以利用该方案,用于不同场景,如削峰限流、异步扣减等场景中。目前这种方案是结合自己实际中遇到的情景所设计的。如果有不足或者错误之处,或者与你的需求场景不符合甚至更复杂,欢迎留言沟通交流~

©️2020 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页