接口幂等+防重复提交+失败重试

1、接口幂等
接口幂等性就是用户对同一接口发起了一次或多次请求之后,对数据的影响是不变的,不会因为多次请求而产生不同的结果。

实现方案:
调用方传:参数+UUID,当接口请求参数和UUID生成key,存到Redis状态为处理中,当处理完成后,
将状态置为失败或者成功,并且把接口UUID持久化到数据库,并且设置redis的key过期时间,因为有可能因为处理
中时线程中断,没来得及设置redis的状态为失败。所以要加个过期时间,第二次请求先查数据在确定是否生成新的交易。

这个UUID,由前端页面提供,最好是页面有轮动UUID都重新生成。

2、重复提交:是指在一段时间内,只能提交一次请求。

用户重复提交:一般是指用户填写好表单信息后,由于响应较慢,从而多次点击提交按钮。

处理方案:

相同的参数,请求进redis,如果几秒内多次请求直接拒绝掉,设置过期时间,比如最多相同key只能2秒请求一次。这样就可以防止重复提交数据了。

3、失败重试:指分布式项目中,被调用方出现超时或异常时,触发了调用方的重试补偿机制。

如果对于失败的情况,明确失败,可以手动清楚redis中的key。其实和【幂等】类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

信仰_273993243

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值