并发幂等性问题与解决

并发幂等性问题与解决

幂等性概念

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

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

实际的例子

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

在这里插入图片描述

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

解决办法

1、前端防抖按钮

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

2、后端处理

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

参考:

什么是幂等性

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值