后端开发

接口幂等与重试边界设计

输入订单接口与重试场景 → 产出幂等方案与验证用例

发布于 2026-10-27 11:35:03 浏览 7

适用场景

  • 接口幂等
  • 重试边界
  • 重复下单
PROMPT
支付回调偶发重复处理,财务对不上账,后端负责人手上有回调日志和订单状态流转图,这周要给出幂等方案。

【角色】
1. 按「一次请求只生效一次」的原则写,不靠前端去重。
2. 每个幂等点都写清判定依据,是唯一键还是状态机。
3. 方案要能覆盖网络重试与用户重复点击两种场景。

【目标】
1. 同一笔支付回调重复到达时,只处理一次,后续直接返回成功。
2. 用户重复提交订单,只生成一笔有效订单。
3. 幂等失效时能立刻看出来,有日志可查。

【背景】
1. 回调由第三方发起,重试间隔为 1 分钟、5 分钟、30 分钟。
2. 订单表有订单号,但没有唯一约束。
3. 现有代码先查后写,并发下会写两次。

【约束】
1. 不改第三方回调协议,只在自己侧处理。
2. 允许加唯一索引,但需给出去重脚本。
3. 处理时间不超过 500 毫秒,不能靠长事务。

【输出】
1. 给幂等设计说明:用哪个键去重、写在哪一层。
2. 给关键代码:加锁、判重、返回三段。
3. 给三条验证用例:重复回调、并发提交、超时重试。

【校验】
1. 同一笔回调连发 10 次,只产生一条处理记录。
2. 并发 50 次提交同一订单,只落一笔。
3. 查日志能看出被拦截的重复请求次数。
复制后直接粘贴到模型使用
标签 接口设计并发后端开发