比如我们遇到了一个提交订单的例子
接口幂等性介绍

  • 假设模拟网速很慢,它点击了多次提交订单,我们数据库的订单被插入了多份,订单的防止重复提交是非常重要的(无论是表单之间的提交,还是微服务之间的相互调用,都可能出现多次提交)专业术语就是要保证提交订单的幂等性(提交一次和提交一百次结果都是一样的),接下来我们就来讨论一下接口幂等性问题

1:什么是幂等性?

接口幂等性介绍

2: 哪些情况需要防止?

接口幂等性介绍

3: 什么情况下需要幂等?

接口幂等性介绍

4:幂等解决方案

  1. token机制

我们来到一个页面给页面放上一个令牌(假设这个令牌就是123456),我们点击提交订单就是会带上这一个令牌,服务器提前存储了这个令牌就是123456,页面提交来的令牌和服务器的一模一样,就算是验证通过了;只要我们的验证通过,服务器就会把这个令牌删除;如果下一次还要在进行重复提交,我们的服务器已经把原来的令牌(123456)给删除了,所以验证就会不通过;就可以保证幂等性
接口幂等性介绍
接口幂等性介绍

  • 注意:从上面的危险性可知:我们一定要保证从redis获取的令牌,和前端发送到服务端的令牌进行对比,还有删除令牌,这三个操作一定是原子性的
  1. 各种锁机制

接口幂等性介绍
接口幂等性介绍
3. 各种唯一约束

接口幂等性介绍
4. 防重表

接口幂等性介绍
5. 全局请求的唯一id

接口幂等性介绍

相关文章: