并发幂等性问题与解决

Posted 明天会更好new

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了并发幂等性问题与解决相关的知识,希望对你有一定的参考价值。

并发幂等性问题与解决

幂等性概念

幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

在HTTP/1.1中,对幂等性进行了定义。他描述了一次和多次请求某一个资源对于资源本身应该具有同样的后果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。
这里的副作用是不会对结果产生破坏或产生不解预料的结果。也就是说,其任意多次的执行对资源本身所产生的的影响均与一次执行的影响相同。

实际的例子

提交订单,以极快的速度点n次(三次吧),相同的数据,但是应该只产生一个订单,但是现在是并发的情况,有肯能产生多单,或者主键重复报错。

订单这一个表插入的时候还好,1个成功其余的报错,但是订单表关联的子表,就会出现垃圾数据!

解决办法

1、前端防抖按钮

但是这个方法有时候不管用,碰到盗刷的,恶意的,还有网络不好的情况是不管用的。

2、后端处理

实现方法必然是加锁,推荐使用redis,方法开始时setnx,结束时删除锁,当然也要设置过期时间,防止锁一直存在。

参考:

什么是幂等性

以上是关于并发幂等性问题与解决的主要内容,如果未能解决你的问题,请参考以下文章

高并发系统数据幂等性

关于高并发系统数据幂等的常用技术解决方案

高并发核心技术 - 幂等性与分布式锁

324接口幂等性到底是什么意思,问什么接口幂等性解决方案都是解决并发的

常见接口和服务幂等性问题及解决方案

解决并发保证数据一致性幂等性方案