- 接口幂等性: 多次调用接口, 与调用一次接口最终结果一致(或者说产生相同的作用)
- RESTful标准的 Http接口 ( => SystemDesign-RESTful):
- GET: 查询, 符合幂等
- POST: 创建, 不应设计为幂等
- PUT: 更新, 应设计为幂等
- DELETE: 删除, 应设计为幂等
- 工程如何实现:
- 如果是余额减扣(防止客户端误点击产生重复扣款): 第一次请求从server端取得唯一id, 第二次请求带着唯一id进行减扣, 服务端可以存Redis或者通过Mysql唯一索引对这个id去重 (或者每次本地动作都用uuid生成一次)
- 如果订单支付这种有唯一id的场景, 可以使用订单id去重, 或者通过订单的状态机
@ref