分布式架构之详解幂等

幂等的概念

在数学里,幂等有两种主要的定义。
1、在某二元运算下,幂等元素是指被自己重复运算(或对于函数是为复合)的结果等于它自己的元素。例如,乘法下仅有两个幂等实数,为0和1。
2、某一元运算为幂等的时,其作用在任一元素两次后会和其作用一次的结果相同。例如,高斯符号便是幂等的。
一元运算的定义是二元运算定义的特例。

在计算机领域,幂等是指多次调用对系统产生的影响是一样的,即对资源的作用是一样的,但是返回值允许不同。

我们说一个 HTTP 方法是幂等的,指的是同样的请求被执行一次与连续执行多次的效果是一样的,服务器的状态也是一样的。换句话说就是,幂等方法不应该具有副作用(统计用途除外)。在正确实现的条件下, GET , HEAD , PUT 和 DELETE 等方法都是幂等的,而 POST 方法不是。所有的 safe 方法也都是幂等的。
幂等性只与后端服务器的实际状态有关,而每一次请求接收到的状态码不一定相同。例如,第一次调用 DELETE 方法有可能返回 200 ,但是后续的请求可能会返回 404 。

举例来说,一个GET请求,每次返回的结果都相同,那么多次请求效果是相同的,我们就说这个请求是幂等的。而如果一个POST请求,每次请求后台都会新增一条记录,我们就说这个请求是不幂等的。

多次幂等请求:

GET /pageX HTTP/1.1   -> Return pageX
GET /pageX HTTP/1.1   -> Return pageX
GET /pageX HTTP/1.1   -> Return pageX

多次不幂等的请求:

POST /add_row HTTP/1.1   -> Adds a new row
POST /add_row HTTP/1.1   -> Adds a new row
POST /add_row HTTP/1.1   -> Adds a new row

对于SQL语句,如果多次执行产生的效果相同,我们就说这条SQL是幂等的,否则就不幂等。
举例来说,如果下面SQL中的name是有唯一索引的,多次执行以后数据库只能插入一条记录,那么这条SQL就是幂等的,否则不幂等。

INSERT INTO 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值