如何保证接口幂等性

一、概念

幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次
比如:

  • 订单接口, 不能多次创建订单
  • 支付接口, 重复支付同一笔订单只能扣一次钱
  • 支付宝回调接口, 可能会多次回调, 必须处理重复回调
  • 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次等等
  • 唯一索引 -- 防止新增脏数据
  • token机制 -- 防止页面重复提交
  • 悲观锁 -- 获取数据的时候加锁(锁表或锁行)
  • 乐观锁 -- 基于版本号version实现, 在更新数据那一刻校验数据
  • 分布式锁 -- redis(jedis、redisson)或zookeeper实现
  • 状态机 -- 状态变更, 更新数据时判断状态
原文地址:https://www.cnblogs.com/nongzihong/p/14552895.html