java中如何保证接口的幂等性呢?
下文笔者讲述java代码中保证接口幂等性的方法分享,如下所示:
幂等性简介
幂等性:指一个接口,多次发起同一个请求,但是接口只会运行一次常见的需考虑幂等性的业务,如下所示:
- 订单接口,一次请求禁止创建多个订单
- 支付接口,同一笔订单禁止重复扣款
- 支付宝回调接口,禁止多次回调
- 普通表单提交接口, 因为网络超时等原因多次点击提交, 只能成功一次等
- 唯一索引:防止新增脏数据
- token机制:防止页面重复提交
- 悲观锁:获取数据的时候加锁(锁表或锁行)
- 乐观锁:基于版本号version实现, 在更新数据那一刻校验数据
- 分布式锁:redis(jedis、redisson)或zookeeper实现
- 状态机:状态变更, 更新数据时判断状态
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。