幂等性实现方式整理

常见方案

前端js添加禁用 (如果客户端禁止使用js, 此方法无效)

唯一索引 – 防止新增脏数据

使用AOP自定义切入实现

token机制 – 防止页面重复提交
(恶意用户可利用这一性质,不断重复访问页面,以致Session中保存的标识号不断增多,最终严重消耗服务器内存。可以采用在Session中记录用户发帖的时间,然后通过一个时间间隔来限制用户连续发帖的数量来解决这一问题。)

悲观锁 – 获取数据的时候加锁(锁表或锁行)

乐观锁 – 基于版本号version实现, 在更新数据那一刻校验数据

分布式锁 – redis(jedis、redisson)或zookeeper实现

状态机 – 状态变更, 更新数据时判断状态

insert操作的幂等性

有唯一业务号的insert操作 :例如秒杀 商品id+用户id
通过分布式锁 保证接口幂等性
业务执行完成后,不进行锁释放 让其自动过期

没有唯一业务好的insert操作 例如 用户注册 点击多次
使用token机制 保证幂等性
进入到注册页时,后台统一生成token 返回前台隐藏域中
用户在页面点击提交时,讲token一同传入后台
使用token获取分布式锁 ,完成insert操作
执行成功后,不进行锁释放 让其自动过期

参考

防止表单重复提交(只通过后台实现)_MrBlackWhite的博客-CSDN博客_防止表单重复提交
实现幂等性的几种方式
幂等性的实现方案
高并发下接口幂等性解决方案 - Ruthless - 博客园

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值