幂等性设计——让操作“重复无忧“
幂等性设计——让操作"重复无忧"
你有没有在银行转账时多按了一次确认?
生活场景:银行的"幂等"
你在银行转账
你给朋友转1000块:
- 点击"确认转账"
- 网络卡了
- 页面没反应
- 你又点了一次
结果:只转了1000块,不是2000块。
银行的系统做了幂等处理:同一个转账请求,重复提交只执行一次。
没有幂等的系统
你买了一件商品:
- 点击"立即购买"
- 网络卡了
- 又点了一次
结果:下了两单,付了两次钱。
惨!
技术故事:幂等的必要性
为什么会重复请求?
用户点击按钮 │ ▼ 网络请求发出 │ ├─→ 服务器处理成功 │ ├─→ 网络超时,用户以为失败了 │ ├─→ 用户再次点击 │ └─→ 服务器又处理一次常见场景:
- 网络超时
- 前端重复
