在高并发场景中,如何有效防止数据重复出现?

2026-04-28 14:231阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4678个文字,预计阅读时间需要19分钟。

在高并发场景中,如何有效防止数据重复出现?

前言+最近测试给我提出了一个bug,说之前提供的一个批量复制商品的接口,产生了重复的商品数据。+追踪原因后发现,这个事情没有想象中简单,可以说是一波多折。+1.需求+产品有一个需

前言

最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。

追查原因之后发现,这个事情没想象中简单,可以说一波多折。

1. 需求

产品有个需求:用户选择一些品牌,点击确定按钮之后,系统需要基于一份默认品牌的商品数据,复制出一批的商品。

拿到这个需求时觉得太简单了,三下五除二就搞定。

我提供了一个复制商品的基础接口,给商城系统调用。

当时的流程图如下:

如果每次复制的商品数量不多,使用同步接口调用的方案问题也不大。

2. 性能优化

但由于每次需要复制的商品数量比较多,可能有几千。

如果每次都是用同步接口的方式复制商品,可能会有性能问题。

因此,后来我把复制商品的逻辑改成使用mq异步处理。

改造之后的流程图:

复制商品的结果还需要通知商城系统:

这个方案看起来,挺不错的。

但后来出现问题了。

3. 出问题了

测试给我们提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。

经过追查之后发现,商城系统为了性能考虑,也改成异步了。

他们没有在接口中直接调用基础系统的复制商品接口,而是在job中调用的。

阅读全文

本文共计4678个文字,预计阅读时间需要19分钟。

在高并发场景中,如何有效防止数据重复出现?

前言+最近测试给我提出了一个bug,说之前提供的一个批量复制商品的接口,产生了重复的商品数据。+追踪原因后发现,这个事情没有想象中简单,可以说是一波多折。+1.需求+产品有一个需

前言

最近测试给我提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。

追查原因之后发现,这个事情没想象中简单,可以说一波多折。

1. 需求

产品有个需求:用户选择一些品牌,点击确定按钮之后,系统需要基于一份默认品牌的商品数据,复制出一批的商品。

拿到这个需求时觉得太简单了,三下五除二就搞定。

我提供了一个复制商品的基础接口,给商城系统调用。

当时的流程图如下:

如果每次复制的商品数量不多,使用同步接口调用的方案问题也不大。

2. 性能优化

但由于每次需要复制的商品数量比较多,可能有几千。

如果每次都是用同步接口的方式复制商品,可能会有性能问题。

因此,后来我把复制商品的逻辑改成使用mq异步处理。

改造之后的流程图:

复制商品的结果还需要通知商城系统:

这个方案看起来,挺不错的。

但后来出现问题了。

3. 出问题了

测试给我们提了一个bug,说我之前提供的一个批量复制商品的接口,产生了重复的商品数据。

经过追查之后发现,商城系统为了性能考虑,也改成异步了。

他们没有在接口中直接调用基础系统的复制商品接口,而是在job中调用的。

阅读全文