幂等(idempotence)本来是一个代数中的概念。说的是,x为某集合内的任意数, f为运算子,如果满足f(x)=f(f(x)), 那么称f运算具有幂等性(idempotent)。比如: abs(a)=abs(abs(a))。
在计算机方面用来表示对同一个过程应用相同的参数多次和一次调用产生的效果是一样的,这样的过程被称为满足幂等性。系统接口对外的一种承诺,不用担心重复执行会对系统造成改变。
电商系统,支付系统中幂等性尤其重要!
(1)HTTP的幂等性
HTTP/1.1规范中幂等性的定义:
引用
Methods can also have the property of "idempotence" in that (aside from error or expiration issues) the side-effects of N > 0 identical requests is the same as for a single request.
https://tools.ietf.org/html/rfc2616#section-9.1.2
同一个请求,发送一次和发送多次效果一致。强调的是一次和N次效果(对系统的改变)是相同的,但不是每次的结果相同。
- GET, HEAD 幂等且安全
- PUT, DELETE 幂等但不安全
- POST 既不幂等也不安全
*** 安全指的是不会修改资源
重复提交、定时任务、异步处理等都需要考虑幂等性。
(2)REST的冪等性
使用相同参数对同一资源重复调用的结果与调用一次的结果相同。一般,同一个URL返回的资源一定是一致的。
(3)分布式系统接口的幂等性
幂等性是分布式系统设计中十分重要的概念。
首先需要知道retry的必要性:
- -对方服务器宕机
- -对方程序负荷太高无应答
- -内存消耗太大无法立即处理
- -数据传输过程中出错
网络的不可靠性造成了系统间调用除了成功和失败外,有了第三个状态:超时。
(4)运维工具的冪等性
模块的执行具有幂等性。比如,自动化配置管理工具(Chef、Puppet、Ansible)
(5)如何保证幂等性
- 请求唯一标识(Synchronized Token、Idempotent Receiver)
- 事务(分布式事务)
- 锁表(MVCC多版本并发控制,采用乐观锁通过version或updateTime等条件保证更新操作)
- 消息队列
参考:
http://www.infoq.com/cn/news/2013/05/idempotent
http://www.cnblogs.com/weidagang2046/archive/2011/06/04/idempotence.html
http://frsyuki.hatenablog.com/entry/2014/06/09/164559
分享到:
相关推荐
总结来说,计算机基础知识涵盖计算机的历史、硬件、软件以及网络和安全等方面,这些知识是理解和操作日常所用的Word文档、Excel电子表格和PowerPoint演示文稿的基础,同时也为深入学习其他IT领域奠定了坚实的基础。
1. ASCII码(美国标准信息交换代码)是最早广泛使用的编码系统,主要为英文字符设计。它用7位二进制数表示128个字符,包括英文大小写字母、数字、标点符号等。在某些欧洲地区,由于扩展ASCII的需求,会使用8位二进制...
在初中阶段,学生们已经接触过如y=x、y=x^2和y=x^-1等简单的幂函数,而高中阶段则会更深入地探索和概括这些概念,形成更加系统化的知识框架。 教学目标主要包括两方面:一是让学生通过幂函数的概念学习和图像、性质...
- 事务:RESTful API通常不支持原子性事务,但可以通过幂等性设计部分解决。 6. 重要性理解: - 可寻址性:确保资源易于发现和访问,是REST的核心。 - 无状态性:简化服务器设计,提高系统可扩展性。 - 统一...
### 软考基础知识专题一:...通过上述介绍,我们可以了解到计算机系统的基础知识,包括计算机的结构、工作原理以及数据的表示和转换等内容。这对于软件设计师来说是非常重要的基础,有助于更好地理解和设计软件系统。
机械工程控制基础知识点整合汇总 控制论的中心思想是通过信息的传递、加工处理和反馈来进行控制。控制系统的三要素是信息、反馈和控制。研究对象是控制系统及其输入、输出三者之间的动态关系。 反馈是系统的输出...
在分布式系统和接口设计中,幂等性是确保系统稳定性和数据一致性的关键特性,尤其在处理重复请求时。 2. **幂等框架设计**:设计一个幂等框架主要是为了处理接口调用的重复问题,确保业务不受重复操作的影响。框架...
9. **容错与恢复**:故障转移、冗余备份、幂等性设计、断路器模式。 10. **安全性和隐私保护**:HTTPS、OAuth、JWT、SSL/TLS协议,以及防止SQL注入、XSS攻击等。 11. **大数据处理**:Hadoop、Spark、Storm等框架...
此部分旨在帮助考生掌握计算机公共基础知识中的核心概念、算法与数据结构等内容,通过对120个关键知识点的深入分析,帮助考生更好地准备考试。 ### 知识点详解 **1. 时间复杂度的概念** 题目中提到的时间复杂度是...
通过这些练习题,我们可以看到计算机基础知识的重要性,它涵盖了计算机的原理、类型、发展历程、应用以及数制转换等多个方面,这些都是理解更高级IT概念的基础。对于学习和使用计算机的人来说,掌握这些基础知识是至...
本书通过通俗易懂的语言为读者提供了理解复杂网络的基础知识。 #### 二、复杂网络概述 1. **定义与特征**: - 复杂网络是指由大量节点通过非随机的方式相互连接形成的系统。 - 典型特征包括小世界效应(short ...
Python基础知识是计算机编程领域的重要组成部分,它不仅包含了语言的基本概念、语法、数据类型、控制流程等,还涉及了数据结构、函数定义和使用等重要内容。接下来,我们将从给定文件内容中提取并详细阐述这些知识点...
- **技术专题篇(第11~18章)**:介绍了支付系统领域内的关键技术主题,包括业务ID生成规则、支付安全、状态机设计等,不仅适用于支付系统设计,也能应用于更广泛的场景。 #### 三、具体内容分析 ##### 入门篇 - ...
总结来说,大型数据库系统架构设计方法强调了系统设计的可扩展性、高可用性、负载均衡、容错和失效转移等核心原则,并从理论和实践两个层面解析了关系数据库的基础概念和应用场景。通过对这些知识点的深入了解和应用...
### Linux操作系统入门基础知识详解 #### 一、硬盘与分区管理 **硬盘介绍:** 硬盘是计算机中最主要的数据存储设备之一,通常被设计成一个方形盒子的外形,内部包含旋转的磁性盘片(即所谓的“盘”),这些盘片...
《初中数学基础知识及经典题型实用的中考专题复习指导书》是一本专为初中生设计的中考复习资料,旨在帮助学生巩固数学基础知识,掌握解题技巧,并提高应对中考的能力。以下是对该书主要内容的详细说明: ### 第一章...
控制系统设计是工程领域中至关...总的来说,这份文档详细介绍了控制系统设计中的基本理论和实践方法,涵盖了频谱分析、输入信号设计、误差计算以及噪声处理等多个方面,为深入理解和设计控制系统的复杂问题提供了基础。
计算机基础知识是学习和理解计算机应用的基础,主要包括计算机系统的组成、信息的表示以及计算机软件系统的内容。以下是这些知识点的详细说明: 1. 计算机系统的基本组成: - 计算机系统由硬件系统和软件系统构成...
- 计算机中的数字表示,如2的幂表示,例如2^4、2^8等,这些是计算机科学中关于数字系统的基础知识。 4. 编码系统和数据表示: - 字符的编码问题,如"CDH291A"、"123HB"等,可能指的是一种特定的编码系统。 - ...
电子基础知识与基本工艺培训资料是学习电子技术的重要资源,涵盖了电阻、电容、二极管、三极管等基础元件的原理与应用,以及电路识别、元件辨认、电子器件和电路板制作等方面的知识。 一、电阻知识 1.1 电阻种类:...