前言
最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。
追查原因之后发现,这个事情没想象中简单,可以说一波多折。
1. 需求
产品有个需求:用户选择一些品牌,点击确定按钮之后,系统需要基于一份默认
品牌的商品数据,复制出一批新
的商品。
拿到这个需求时觉得太简单了,三下五除二就搞定。
我提供了一个复制商品的基础接口,给商城系统调用。
当时的流程图如下:
如果每次复制的商品数量不多,使用同步接口调用的方案问题也不大。
2. 性能优化
但由于每次需要复制的商品数量比较多,可能有几千。
如果每次都是用同步接口的方式复制商品,可能会有性能问题。
因此,后来我把复制商品的逻辑改成使用mq
异步处理。
改造之后的流程图:
复制商品的结果还需要通知商城系统:
这个方案看起来,挺