重复下单和多次下单问题,两者的共同点在于:业务上看都是相同的商品类型和数量由用户提交给服务。不同点在于:时序上,多次下单是指:下一个相同商品&数量订单提交的时机是在上一个已经成功落库之后。重复下单的时机是指:下一个相同商品&数量订单提交的时机是在上一个已经成功落库之前
造成重复的起因有两个: 1.用户点击行为上的重复操作/网页刷新的重复操作,导致了重复请求 2.Nginx/网关网络延迟导致的自动超时重试 mp.weixin.qq.com/s/KCbCQ7rrc…
前端的防重机制:
- 防抖
- 等待请求成功的loading锁
- 重复请求防重(下一个请求响应成功之前,对应的相同请求不让发送)
多次相同请求的提交,只能被处理一次:
同样是幂等性场景,“如何防止重复提交订单” 比 “如何防止订单重复支付” 的解决方案要难一些。