码迷,mamicode.com
首页 > 其他好文 > 详细

幂等性

时间:2019-09-14 22:13:13      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:设计   问题   一个   服务设计   超时   关注   数据库操作   防止   重复   

  

  HTTP1.1中对幂等性的定义是:一次和多次请求某一资源对资源本身应该具有相同的结果(网络超时等问题除外)也就是说,其任意多次执行对资源本身产生的影响均与依次执行的影响相同。

有几个需要注意的点:

(1)幂等不仅仅只是一次(或多次)请求对资源没有副作用,(比如查询数据库操作,没有增删改,因此对数据库没有任何影响)。

(2)幂等还包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用;

(3)幂等关注的是以后的多次请求是否对资源产生的副作用,而不关注结果;

(4)网络超时等问题不是幂等的讨论范围。

 

什么情况下需要幂等

业务中,经常遇到重复提交的情况,无论是由于网络问题无法接收到请求结果而重新发起请求,还是前端的操作抖动导致重复提交的情况。在交易系统中,重复提交造成的问题尤为明显:

        1、用户在APP上连续点击多次提交订单,后台应该只产生一个订单。

声明幂等的服务认为,外部调用者会存在多次调用的情况,为了防止外部多次调用对系统数据状态发生多次改变,将服务设计成幂等。

 

幂等更多的使用情况是:第一次请求不知道结果(比如超时)或者失败的异常情况下,发起多次请求,目的是多次确认第一次请求成功,却不会因为多次请求而出现多次的状态变化。

 

幂等性

标签:设计   问题   一个   服务设计   超时   关注   数据库操作   防止   重复   

原文地址:https://www.cnblogs.com/xiaoan0705/p/11520259.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!