Visual LabINTERACTIVE LEARNING
04 · BUSINESS BACKENDP015 MIN

幂等键、唯一约束与重试安全

确保重复请求只产生一次业务效果,并能安全返回第一次结果。

MENTAL MODELIDEMPOTENCY
01Key + Request Hash
02Reserve Key
03Transaction
04Store Response
05Replay Same Result
网络只保证“可能送达”,不会告诉服务这是第二次;Idempotency Key 为一次业务意图提供稳定身份。
01 · CONCEPTS & BOUNDARIES

先把概念与边界说清楚

定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。

01

Idempotency Key

客户端为一次创建/付款等业务意图生成唯一键,服务端保存处理状态与响应。

02

Unique Constraint

数据库对 tenant + operation + key 建唯一约束,裁决并发首次写入。

03

Retry Safety

重复执行不会产生额外副作用,或能识别已完成结果并返回。

02 · BLIND BOTS CASE

用户双击提交生成两个订单

问题现场

前端按钮禁用稍慢,两个 POST 同时到达两台实例。

  1. 01

    客户端为本次提交生成 idempotency key。

  2. 02

    数据库唯一约束只允许一个处理者。

  3. 03

    第二个请求等待或返回已保存订单响应。

得到什么

双击、超时重试和代理重放都不会生成第二个订单。

03 · PRACTICE

马上动手

  1. 设计 idempotency 记录的字段与状态。
  2. 说明同 key 不同 request body 应如何处理。
04 · PITFALLS

常见坑

  • 只用前端 debounce
  • 幂等记录先完成、业务事务后失败
  • 第三方调用没有自己的幂等键
05 · KNOWLEDGE CHECK幂等性为何常要组合 Idempotency Key、Transaction 与 Unique Constraint?查看答案⌄
答案

Key 标识意图,唯一约束裁决并发,事务让业务结果与幂等记录一起提交;三者分别解决不同失败窗口。