- 提交订单按钮如何防止重复提交
- 表单录入页如何防止重复提交
- 微服务接口,客户端重试时,会对业务数据产生影响吗?
接口幂等性
幂等性: f(f(x)) = f(x)
幂等元素运行多次,还等于它原来的运行结果
在系统中,一个接口运行多次,与运行一次的效果是一致的
什么情况下需要幂等性
重复提交,接口重试,前端抖动操作等
并不是所有接口都要求幂等性,要根据业务而定
保证幂等性的策略
幂等性的核心思想:通过唯一的业务单号保证幂等
非并非情况下,查询业务单号有没有操作过,没有则执行操作
并发情况下,整个操作过程加锁
select操作:天然幂等
delete操作:第一次已经删除,第二次也不会有影响
update操作:更新操作传入数据版本号,通过乐观锁实现幂等性
insert操作: 此时没有唯一业务单号,使用token保证幂等
混合操作:找到操作的唯一业务单号,有则可使用分布式锁,没有可以通过token保证幂等
Delete操作的幂等性
- 根据唯一业务号去删除
- 第一次删除时,已将数据删除
- 第二次再次执行时,由于找不到记录,所以返回的结果是0,对业务数据没有影响。可在删除前进行数据的查询。
