困难 · 高频 5/5
如何设计接口幂等性方案?
接口幂等通常通过业务唯一键、请求幂等号、数据库唯一约束、状态机校验和分布式锁组合实现。
简短答案
接口幂等通常通过业务唯一键、请求幂等号、数据库唯一约束、状态机校验和分布式锁组合实现。
详细解析
幂等的目标是同一个业务请求重复到达时只产生一次有效结果。支付、下单、扣库存、消息消费都需要幂等。
- 前端或网关生成 requestId。
- 业务表建立唯一约束。
- 状态流转只允许合法前置状态更新。
- 消息消费保存消费记录。
- 必要时用锁保护短临界区。
面试回答模板
我会先判断业务动作是否允许重复,再选择幂等键。比如订单创建用用户加商品加活动生成唯一键,支付回调用支付流水号,数据库唯一约束兜底,状态机控制重复更新。
易错点
- 只背结论,不解释原理和边界。
- 忽略真实生产环境中的容量、延迟、一致性和失败重试。
- 没有结合项目经验说明为什么这样设计。
常见追问
- 这个方案在高并发下有什么风险?
- 如果数据规模扩大十倍,你会如何调整?
- 线上出现异常时,你会先看哪些指标?