A10中级
幂等性思维训练
30 分钟设计新功能时
格式:给定操作,判断它是否幂等,如果不是,如何让它变成幂等。
什么是幂等:同一个操作执行一次和执行十次,结果应该一样。
练习:判断以下操作是否幂等:
| 操作 | 幂等? | 为什么? |
|---|---|---|
| 设置用户名为"小明" | ✅ 是 | 设置10次还是"小明" |
| 给账户余额加100元 | ❌ 否 | 加10次就变成1000元了 |
| 发送欢迎邮件 | ? | 你来判断 |
| 删除 ID 为 123 的帖子 | ? | 你来判断 |
| 创建一个新订单 | ? | 你来判断 |
| 更新用户年龄为25 | ? | 你来判断 |
| 给帖子点赞 | ? | 你来判断 |
为什么重要:网络不稳定时,请求可能发送了两次。如果"下单"不是幂等的,用户可能被扣两次钱。
解决方案概念:
- 幂等键(Idempotency Key):每个请求带一个唯一 ID,服务端检查是否处理过
- "设置"比"增加"天然幂等:
balance = 200vsbalance += 100