# 幂等
从逻辑学的角度解释
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资源,而不是一个