原文链接: https://cloud.tencent.com/developer/news/136205
1背景介绍
1.1 幂等性定义
数学定义
在数学里,幂等有两种主要的定义:
在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下唯一两个幂等实数为0和1,即s*s=s
某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同。例如,高斯符号便是幂等的,即f(f(x))=f(x)
HTTP规范定义
在HTTP/1.1规范中幂等性的定义是:
A request method is considered "idempotent" if the intended effect onthe server of multiple identical requests with that method is the same as the effect for a single such request. Of the request methods defined by this specification, PUT, DELETE, and safe request methods are idempotent.
HTTP的幂等性指的是一次和多次请求某一个资源应该具有相同的副作用。如通过PUT接口将数据的Status置为1,无论是第一次执行还是多次执行,获取到的结果应该是相同的,即执行完成之后Status =1。
1.2 幂等概念
微服务架构中,幂等是一致性方面的一个重要概念。幂等(Idempotent)是一个数学领域与计算机学的概念,常见于抽象代数中。而在编程中,一个幂等操作的特点是指其任意多次执行所产生的影响均与一次执行的影响相同。
有人会简单的认为,直接禁止所有重试即可。然而,重试是降低微服务失败率的重要手段。因为网络波动、系统资源分配的不确定性、跨机房的请求等等原因,都会或多或少的导致一小部分请求的失败。而这部分失败的请求中,又有大部分请求其实只需要简单重试几次,即可成功。
1.3 重试机制
降低微服务失败率
提高至四个或五个9
提高微服务架构的容错性
提高微服务架构的高可靠性
2 幂等分析
2.1 幂等场景
可能会发生重复请求或消费的场景,在微服务架