这种是比较经典的幂等性问题,网上可以查到各种各样的解决方案,这里提供一下我自己的思路订单id由前端进行生成后端可以设置多重屏障来防止重复提交第一道屏障:可以通过redis等缓存服务缓存该订单id,且对应的过期时间为1秒,当在1秒内接收到的同一个订单id的请求视为相同请求,直接返回"请勿点击过快"等提示信息第二道屏障:在mysql等关系型数据库中设置主键/唯一键,订单id不允许重复插入
纯前端方案:用户点击后,里面跳转。不给多次点击的机会。防抖节流标配后端方案:做分布式锁。根据 hash(userId + 接口 + 参数) 做为key,短时间限制并发数前后端方案:每次页面加载表单时,请求后端获取token,该token仅能使用一次。防止同一表单多次提交
这种是比较经典的
幂等性
问题,网上可以查到各种各样的解决方案,这里提供一下我自己的思路多重屏障
来防止重复提交
缓存该订单id
,且对应的过期时间
为1秒,当在1秒内接收到的同一个订单id的请求视为相同请求
,直接返回"请勿点击过快"等提示信息主键/唯一键
,订单id不允许重复插入