美文网首页
如何实现下单的幂等性

如何实现下单的幂等性

作者: 十毛tenmao | 来源:发表于2021-07-13 23:59 被阅读0次

用户创建订单的时候,因为重复点击(前端bug)或者网络超时重传等原因,会导致重复请求,那么系统如何即使有重复请求也不会重复下单呢,也就是如何实现幂等性

幂等性

  • 多次请求的效果跟一次请求的效果一样

实现方式

实现幂等性一般需要前后端联合实现

前端

  • 前端请求的时候需要携带一个唯一ID: 后台会使用该唯一ID进行幂等判断
  • 前端按钮点击后,需要置灰: 减少重复请求次数
  • 前端进入提交页后就生成唯一ID,而不是每次点击按钮时生成

唯一ID: 生成这个唯一ID的来源,可以是后台,这样可以保证唯一,如果是前端生成的话一般很难保证。不过这个ID只是为了实现幂等性,对唯一性要求并没有那么严格,能够保证一天唯一就已经满足要求了。毕竟隔了一天时间,不可能还是重复请求了

后台

  • 后台可以处理请求时,首先判断redis中是否已经存在该ID,如果存在,则说明重复请求,就可以返回创建成功;如果不存在,则在redis创建一个key,并设置过期时间为一天
  • 有的方案使用数据库的唯一键来保证幂等性,因为新的订单插入失败,但是这个方案有两个缺点:一是需要由后台生成唯一ID;二是创建订单的时候,一般会先完成促销扣减,库存扣减等操作,然后再插入数据库,这样的话遇到重复请求,处理得代价就比较高

优化

  • 就算ID不一样,如果订单信息完全一样,也需要提醒用户是否重复下单

参考

相关文章

  • 如何实现下单的幂等性

    用户创建订单的时候,因为重复点击(前端bug)或者网络超时重传等原因,会导致重复请求,那么系统如何即使有重复请求也...

  • 什么是接口的幂等性,如何实现接口幂等性?一文搞定

    每天一个知识点 什么是接口的幂等性,如何实现接口幂等性? (一)幂等性概念 幂等性原本是数学上的概念,用在接口上就...

  • 编程思想之幂等性

    前言 今天面试被问到幂等性如何实现,答的稀里糊涂,回来冷静的思考一下 什么是幂等性 既然幂等性源于数学,那我就使用...

  • SpringBoot接口幂等性实现的4种方案!

    目录 什么是幂等性 什么是接口幂等性 为什么需要实现幂等性 引入幂等性后对系统的影响 Restful API 接口...

  • 幂等性

    理解 HTTP 幂等性(15')系统幂等以及常用实现方式(10')分布式系统互斥性与幂等性问题的分析与解决(30')

  • 冥等性

    编程中的幂等性(二):高并发的系统如何保证幂等性 - 阿官 - CSDN博客

  • 接口幂等性

    接口幂等性 什么是接口幂等性? 最简单想到的实现接口幂等性(重复提交)的操作是什么? 最简单稍靠谱的解决方案是什么?

  • 接口的幂等性的N种考虑

    分布式服务接口的幂等性如何设计 什么是幂等性 一个分布式系统中的某个接口,要保证幂等性,该如何保证?这个事儿其实是...

  • 防止重复下单和幂等模式的应用

    重复下单 HTTP的幂等性 HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的结果。在HTTP 1.1...

  • 什么是接口的幂等性,如何实现接口幂等性?

    推荐阅读: 我总结了72份面试题,累计3170页,斩获了30+互联网公司offer(含BATJM)[https:/...

网友评论

      本文标题:如何实现下单的幂等性

      本文链接:https://www.haomeiwen.com/subject/hluepltx.html