文章目录
- 如何防止重复提交订单?
- 重复提交原因
- 常见解决方案
- 方案一:提交订单按钮置灰
- 幂等性
- 方案二:预生成全局唯一订单号
- 方案三:前端生成全局唯一订单号
- 方案四:从订单业务的本质入手
- 结语
如何防止重复提交订单?
重复提交原因
其实原因无外乎两种:
- 一种是由于用户在短时间内多次点击下单按钮,或浏览器刷新按钮导致。
- 另一种则是由于Nginx或类似于SpringCloud Gateway的网关层,进行超时重试造成的。
常见解决方案
方案一:提交订单按钮置灰
这种解决方案在注册登录的场景下比较常见,当我们点击”发送验证码“按钮的时候,会进行手机短信验证码发送,且按钮就会有一分钟左右的置灰。
有些经验不太丰富的同学,通常会简单粗暴地把这个方案直接照搬过来。
但这种方案只能解决多次点击下单按钮的问题,对于Nginx或类似于SpringCloud Gateway的超时重试所