SystemDesign | 接口幂等性

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

@ref