接口幂等性问题解决方案

幂等性概念

一个操作如果多次任意执行所产生的影响(或者叫副作用),都是相同的。

场景

在订单提交页面,因网络问题,导致订单处理延时,用户在无反应的情况下,多次点击提交按钮,会在订单库中插入重复的订单。

方案一 token+Redis

用户在进入表单提交页面前,向支付系统申请token,后端将token存储到redis中,如果前端提交表单,后端验证token,如果存在,则表示第一次提交,如果不存在,则是第二次提交,给予对应处理

方案二 唯一索引

数据库设置订单号为唯一索引值,比如前端生成订单号,后端无法第二次提交插入数据请求。
(注意:前端需要根据订单内容改变,而改变订单号,保证订单号为当前订单唯一ID)

方案三 队列缓冲

讲请求都接收,通过缓冲队列,后续异步处理,过滤掉重复请求,然后保存数据库处理,
(注意:异步处理不能及时返回请求结果,需要后续轮询处理结果)

·
·
·
·
·
「如果你有什么思路,可以浏览大家一起讨论」

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值