http的幂等性

article/2025/11/7 4:30:00

一. 什么是幂等性
幂等(idempotent): 在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“setTrue()”函数就是一个幂等函数,无论多次执行,其结果都是一样的.更复杂的操作幂等保证是利用唯一交易号(流水号)实现.
以上概念来源于百度百科.
根据以上解释我们可以举出几个跟主题http相关的例子来帮助大家理解:
a. get 请求: 对于一个get请求来说, 理论上我们在同时并发一万次的情况下,返回的结果都是一样的, 这个请求则幂等请求
b. post 请求: 在http restful定义中, 此请求就是idempotent(幂等)的. 用来insert(), 而对于insert的结果来说, 应该只返回true/false, 所以是幂等的
c. put 请求: 用来 update(), 举个简单的例子, 如: 更新用户余额(从10到100), 有两种操作方式 1. setAmount(100), 2. addAmount(90). 应该可以很简单的知道, setAmount(100)无论多少并发同时请求,最终返回的结果都是100, 则可认为是幂等的<不考虑数据库重读与锁的情况>, 而addAmount(90), 来个10次并发, 则有可能被更新为910元, 所以这样的请求则为非幂等的.
d. delete 请求: 用来 delete(), 无论多少并发去delete一个指定条件的时候, 要么成功, 要么失败, 则认为些种方式的请求为幂等的.

根据以上举例我们可以很清楚的知道, 在系统设计中保证操作的幂等性是很重要的.

二. 为什么要使用幂等性
还是从例子开始: 假设有一个用户在ATM上取钱, 取了1000元, 这时候ATM会先向银行服务中心发出一个请求, 扣除用户账户1000元, 成功后再吐1000元给用户.
针对这个案例我们可以定义为函数:

bool withdraw($uId, 1000)
但在现实情况中, 有可能会出现, 因为网络不太好, 则会出现以下种情况:
a. atm 向银行 server 发出扣款请求, 没有成功, 这不会出现什么问题, 因为用户的钱没减少, 也没取到钱.
b. atm 向银行 server 发现扣款请求, 成功了, 但没返回给atm结果, 出现问题: 用户账户上钱少了, 用户却没取到钱. 然后atm接收结果超时后再重试一次, 这次收到返回结果了, 这时候就会出现扣款两次, 用户却只取了1次钱的结果
将上面的例子转化为流程图则为:
这里写图片描述
通过流程图我们可以清楚的看到, 在实际业务中, 无论 atm retry多少次, 用户账户上始终应该只扣除1000元.

三. 怎么使用幂等性
1. 采用分布式事务,通过引入支持分布式事务的中间件来保证withdraw功能的事务性。分布式事务的优点是对于调用者很简单,复杂性都交给了中间件来管理。缺点则是一方面架构太重量级,容易被绑在特定的中间件上,不利于异构系统的集成;另一方面分布式事务虽然能保证事务的ACID性质,而但却无法提供性能和可用性的保证。
2. 一种更轻量级的解决方案是幂等设计。
例如: 大家经常在银行或移动营业厅办理业务, 首先取个号子, 然后拿着号子去柜台办理, 办完以后就把号子丢弃. 而对柜台来说, 这个号子一旦办理过业务, 则第二次再拿此号子去办, 柜台也不会给你办. 衍生到实际设计中流程图如下:
这里写图片描述
这时大家可以清楚的看到, 在这种幂等性设计中, 会很好的保证数据的一致性.

四. 总结
理解就是总结, 哈哈.

参考地址:http://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html


http://chatgpt.dhexx.cn/article/QqBYlPON.shtml

相关文章

HTTP幂等性概念和应用

Idempotence, in programming and mathematics, is a property of some operations such that no matter how many times you execute them, you achieve the same result. 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构…

理解HTTP幂等性

理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中&#xff0c;我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢&#xff1f;我认为很大程度上应归功于简单有效的HTTP协议。HTTP协…

理解 HTTP 幂等性

Programming.log - a place to keep my thoughts on programming 1.理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中&#xff0c;我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行…

HTTP幂等性

https://www.cnblogs.com/weidagang2046/archive/2011/06/04/2063696.html 理解HTTP幂等性 基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中&#xff0c;我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API…

HTTP/接口幂等性与解决方案

幂等性 一&#xff1a;什么是幂等性&#xff1a;二&#xff1a;数据访问的幂等性&#xff1a;2.1&#xff1a;增加操作&#xff1a;2.2&#xff1a;删除操作&#xff1a;2.3&#xff1a;更新操作&#xff1a; 三&#xff1a;幂等性的解决方案&#xff1a;3.1&#xff1a;前端幂…

⾯板数据分析、空间计量、空间杜宾模型学习资料

数据说明 • 该资源包含⾯板数据分析、空间计量、空间杜宾模型的软件安装教程、演示数 据、代码说明以及Stata内do⽂件

杜宾模型错误请教

本人在实践杜宾模型&#xff0c;进行LR检验时&#xff0c;stata14.0出现如下错误&#xff1a; 请问有解决方法吗?网上有人说空间矩阵维数不匹配&#xff0c;检查了情况是匹配的&#xff0c;想请教一下各位大佬

空间杜宾模型-多种权重矩阵制作、空间相关性检验、SDM、SEM、SAR模型的命令、相关检验及其结果分析

一、数据介绍 数据名称&#xff1a;【stata代码】空间杜宾模型相关检验及结果分析 数据说明&#xff1a;包含全面的空间计量步骤——多种权重矩阵制作、空间相关性检验、SDM、SEM、SAR模型的命令、相关检验及其结果分析、中国南海九段线的中国地图制作&#xff0c;读者可以完…

Stata做空间杜宾模型、莫兰指数等操作

以下内容完全由本人在实际操作中搜集整理总结得到&#xff0c;很细致的介绍&#xff1a;从如何在stata中导入数据&#xff0c;怎么定义面板数据&#xff0c;再到如何做局部和全局空间相关性检验&#xff08;莫兰指数&#xff09;和空间杜宾模型等。 1、导入面板数据 在excel中…

一文读懂空间杜宾

目录 一.基本知识及操作 1.基础知识 1.1空间矩阵&#xff08;w)&#xff1a;用来表示平面数据之间的空间距离权重的&#xff0c;是特别重要的参数&#xff0c;可以是经济&#xff0c;空间&#xff0c;其他等区域上的差异距离。&#xff08;我们是做空间的关系的&#xff0c;…

spatialreg | 空间滞后模型(SLR)、空间误差模型(SEM)和空间杜宾模型(SDM)的简单形式的R语言实现...

关于空间计量模型&#xff0c;小编是通过阅读勒沙杰&#xff08;James LeSage&#xff09;和佩斯&#xff08;R.Kelley Pace&#xff09;合著的《空间计量经济学导论》&#xff08;Introduction of Spatial Econometrics&#xff09;入门的&#xff0c;但是当时着重的是理解这些…

spatialreg | 空间滞后模型、空间误差模型和空间杜宾模型简单形式的R语言实现...

旧文重发&#xff0c;原文链接&#xff1a;https://mp.weixin.qq.com/s/pHRS9BfkCMe1uQOSkHmqAw 关于空间计量模型&#xff0c;小编是通过阅读勒沙杰&#xff08;James LeSage&#xff09;和佩斯&#xff08;R.Kelley Pace&#xff09;合著的《空间计量经济学导论》&#xff08…

空间杜宾模型SPDM

T个周期&#xff0c;N个地区&#xff0c;K个解释变量。 1.基准面板回归模型 其中,x1为核心的解释变量&#xff0c;其余为控制变量。 2.空间面板滞后模型SPLM 其中&#xff0c;W为n*n阶距离矩阵&#xff0c;为空间滞后系数。揭示了邻近地区Y值对本地区Y值的影响效应。 3.空间…

空间计量经济学(3)---空间杜宾模型与广义嵌套空间模型

一、空间杜宾模型 1.空间杜宾模型形式 空间杜宾模型(SDM)是空间滞后模型和空间误差项模型的组合扩展形式,可通过对空间滞后模型和空间误差模型增加相应的约束条件设立。空间杜宾模型(SDM)是一个通过加入空间滞后变量而增强的SAR模型(空间滞后模型)。即: 式中𝑾𝟏…

stata实现经济生态的空间杜宾模型

文章目录 摘要一. Stata 实现空间杜宾模型过程1.空间权重矩阵的生成1.1 获取地图json数据文件1.2 获取市级行政单元Shapefile1.3 Arcgis创建空间权重矩阵1.4 创建经济距离权重矩阵 2.莫兰指数分析2.1 收集整理需要被解释分析的变量2.2 莫兰指数的计算 3. 空间杜宾模型简单实现4…

学习中遇到的知识点

A 1.anchor-based&#xff1a; 优点&#xff1a;加入了先验知识&#xff0c;模型训练相对稳定&#xff1b;密集的anchor box可有效提高召回率&#xff0c;对于小目标检测来说提升非常明显。 缺点&#xff1a;对于多类别目标检测&#xff0c;超参数相对难设计&#xff1b;冗余b…

NLP原理和应用入门:paddle(梯度裁剪、ONNX协议、动态图转静态图、推理部署)

目录 一、梯度裁剪 1.1设定范围值裁剪 1. 全部参数裁剪&#xff08;默认&#xff09; 2. 部分参数裁剪 1.2 通过L2范数裁剪 1.3通过全局L2范数裁剪 二. 模型导出ONNX协议 三、动态图转静态图 3.1两种图定义 3.2 什么场景下需要动态图转静态图 3.3为什么动态图模式越来…

论文知识点(补)

时间戳: 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 &#xff08;1&#xff09;Positive pairs&#xff1a;正样本对 &#xff08;2&#xff09;negative pair&#xff1a;负样本对 &#xff08;1&#xff09;假阳性&#xff1a;把不具备你…

Knowledge Distillation with the Reused Teacher Classifier论文阅读+代码解析

论文地址点这里 一. 介绍 给定一个具有大量参数的强大教师模型&#xff0c;知识蒸馏(KD)的目标是帮助另一个参数化较少的学生模型获得与较大的教师模型相似的泛化能力。实现这一目标的一种直接方法是在给定相同输入的情况下对齐它们的logits或类预测。由于KD技术概念简单&…