04 · BUSINESS BACKENDP015 MIN
幂等键、唯一约束与重试安全
确保重复请求只产生一次业务效果,并能安全返回第一次结果。
MENTAL MODELIDEMPOTENCY
01Key + Request Hash
→02Reserve Key
→03Transaction
→04Store Response
→05Replay Same Result
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Idempotency Key
客户端为一次创建/付款等业务意图生成唯一键,服务端保存处理状态与响应。
Unique Constraint
数据库对 tenant + operation + key 建唯一约束,裁决并发首次写入。
Retry Safety
重复执行不会产生额外副作用,或能识别已完成结果并返回。
用户双击提交生成两个订单
前端按钮禁用稍慢,两个 POST 同时到达两台实例。
- 01
客户端为本次提交生成 idempotency key。
- 02
数据库唯一约束只允许一个处理者。
- 03
第二个请求等待或返回已保存订单响应。
双击、超时重试和代理重放都不会生成第二个订单。
马上动手
- 设计 idempotency 记录的字段与状态。
- 说明同 key 不同 request body 应如何处理。
常见坑
- 只用前端 debounce
- 幂等记录先完成、业务事务后失败
- 第三方调用没有自己的幂等键
05 · KNOWLEDGE CHECK幂等性为何常要组合 Idempotency Key、Transaction 与 Unique Constraint?查看答案⌄
答案
Key 标识意图,唯一约束裁决并发,事务让业务结果与幂等记录一起提交;三者分别解决不同失败窗口。