# 幂等

从逻辑学的角度解释

p = p^p

从数学的角度理解

f(f(x)) = f(x)

简单来说,幂等这个概念指的是多次同样的操作不改变结果。幂等的概念广泛运用于各种分布式架构,由于网络延迟等原因,一个请求可能要多次重试,遇到这种情况需要保证对应的请求接口是幂等的。另外还有类似银行转账的情形,就算多次请求也要保证对账户只做一次操作

# HTTP协议的幂等性

以我们常见的四种HTTP Method为例,加深我们对幂等性的理解

# GET

GET操作是幂等的,原因是GET操作根本不会对服务器产生任何影响。有人可能会说我们访问GET/last_news可能每次拿到的数据结果不一样,这里幂等的一致性指的是数据库的最终的存储结果,而不是调用方拿到的返回结果

# PUT

PUT方法通常是对已经存在的资源进行修改,也是幂等的。比如我们发起多个把A替换成B的请求,最终结果还是会B

# DELETE

DELETE方法也是幂等的,例如我们发起多个对A的删除请求,如果第一个成功的话,后面的请求都应返回资源找不到的错误

# POST

POST一般是指新增资源,不是幂等的。如果连续发起三个A资源的增加,最终结果回事三个A资源,而不是一个