幂等性
Posted xiaoan0705
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了幂等性相关的知识,希望对你有一定的参考价值。
HTTP1.1中对幂等性的定义是:一次和多次请求某一资源对资源本身应该具有相同的结果(网络超时等问题除外)也就是说,其任意多次执行对资源本身产生的影响均与依次执行的影响相同。
有几个需要注意的点:
(1)幂等不仅仅只是一次(或多次)请求对资源没有副作用,(比如查询数据库操作,没有增删改,因此对数据库没有任何影响)。
(2)幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用;
(3)幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果;
(4)网络超时等问题不是幂等的讨论范围。
什么情况下需要幂等
业务中,经常遇到重复提交的情况,无论是由于网络问题无法接收到请求结果而重新发起请求,还是前端的操作抖动导致重复提交的情况。在交易系统中,重复提交造成的问题尤为明显:
1、用户在APP上连续点击多次提交订单,后台应该只产生一个订单。
声明幂等的服务认为,外部调用者会存在多次调用的情况,为了防止外部多次调用对系统数据状态发生多次改变,将服务设计成幂等。
幂等更多的使用情况是:第一次请求不知道结果(比如超时)或者失败的异常情况下,发起多次请求,目的是多次确认第一次请求成功,却不会因为多次请求而出现多次的状态变化。
以上是关于幂等性的主要内容,如果未能解决你的问题,请参考以下文章