幂等性

Posted xiaoan0705

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了幂等性相关的知识,希望对你有一定的参考价值。

  

  HTTP1.1中对幂等性的定义是:一次和多次请求某一资源对资源本身应该具有相同的结果(网络超时等问题除外)也就是说,其任意多次执行对资源本身产生的影响均与依次执行的影响相同。

有几个需要注意的点:

(1)幂等不仅仅只是一次(或多次)请求对资源没有副作用,(比如查询数据库操作,没有增删改,因此对数据库没有任何影响)。

(2)幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用;

(3)幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果;

(4)网络超时等问题不是幂等的讨论范围。

 

什么情况下需要幂等

业务中,经常遇到重复提交的情况,无论是由于网络问题无法接收到请求结果而重新发起请求,还是前端的操作抖动导致重复提交的情况。在交易系统中,重复提交造成的问题尤为明显:

        1、用户在APP上连续点击多次提交订单,后台应该只产生一个订单。

声明幂等的服务认为,外部调用者会存在多次调用的情况,为了防止外部多次调用对系统数据状态发生多次改变,将服务设计成幂等。

 

幂等更多的使用情况是:第一次请求不知道结果(比如超时)或者失败的异常情况下,发起多次请求,目的是多次确认第一次请求成功,却不会因为多次请求而出现多次的状态变化。

 

以上是关于幂等性的主要内容,如果未能解决你的问题,请参考以下文章

如何保证接口的幂等性?常见的实现方案有哪些?

如何保证接口的幂等性?常见的实现方案有哪些?

如何保证接口的幂等性?常见的实现方案有哪些?

如何保证接口的幂等性

如何保证接口的幂等性

分布式架构中的幂等性