什么是接口幂等性

幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。

什么是接口幂等性

一、什么是接口幂等性

幂等性原本是数学上的概念,即使公式:f(x)=f(f(x)) 能够成立的数学性质。用在编程领域,则意为对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。

幂等性是分布式系统设计中十分重要的概念,具有这一性质的接口在设计时总是秉持这样的一种理念:调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。

幂等有两个维度:一是空间维度上的幂等,即幂等对象的范围,是个人还是机构,是某一次交易还是某种类型的交易,二是时间维度上的幂等,即幂等的保证时间,是几秒、几分钟还是永久性的。

不同的需求,会有不一样的解决方案,难度和成本也不一样。

二、为什么需要幂等性

业务开发中,经常会遇到重复提交的情况,无论是由于网络问题无法收到请求结果而重新发起请求,或是前端的操作抖动而造成重复提交情况。 在交易系统,支付系统这种重复提交造成的问题有尤其明显,比如:

  1. 用户在APP上连续点击了多次提交订单,后台应该只产生一个订单;
  2. 向支付宝发起支付请求,由于网络问题或系统BUG重发,支付宝应该只扣一次钱。 很显然,声明幂等的服务认为,外部调用者会存在多次调用的情况,为了防止外部多次调用对系统数据状态的发生多次改变,将服务设计成幂等。

三、幂等的不足

幂等是为了简化客户端逻辑处理,却增加了服务提供者的逻辑和成本,是否有必要,需要根据具体场景具体分析,因此除了业务上的特殊要求外,尽量不提供幂等的接口。

1. 增加了额外控制幂等的业务逻辑,复杂化了业务功能;
2. 把并行执行的功能改为串行执行,降低了执行效率。


延伸阅读

保证幂等性的方法

按钮只可操作一次,一般是提交后把按钮置灰或者loading状态,按钮置灰或loading状态可以使用一些js组件实现,消除用户因为重复点击而产生的副作用,比如添加操作,由于点击两次而产生的两条记录。

token机制
产品上允许重复提交,但要保证重复提交不产生副作用,比如点击n次只产生一条记录;具体实现就是进入页面时申请一个token,然后后面所有的请求带上这个token,根据token来避免重复请求;

使用Post/Redirect/Get模式
在提交后执行页面重定向,这就是所谓的Post-Redirect-Get(PRG)模式,简言之,当用户提交了表单后,去执行一个客户端的重定向,转而提交成功信息页面,这样避免用户按f5刷新导致的重复提交,而其也不会出现浏览器表单重复提交的警告,也能消除按浏览器前进和后退按导致的同样重复提交的问题;

在Session中存放特殊标志
在服务器端,生成一个少数的标识符,将它存入session,同时将他写入表单的隐藏中,然后将表单页面发给浏览器,用户输入信息后点击提交,在服务器端,获取表单中隐藏的字段的值,与session中的少数标识符相比较,相等说明是首次提交,就处理本次请求,然后将session中的少数标识符移除,不相等则表示重复提交,不再做处理

文章标题:什么是接口幂等性,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/62280

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
E.ZE.Z认证作者
上一篇 2023年7月28日 下午10:19
下一篇 2023年7月28日 下午10:32

相关推荐

  • 电脑编程对英语有什么影响

    电脑编程对英语带来的影响可以用两个方面来解释:1、对英语语言的普及产生积极作用;2、提高了英语作为编程语言的全球重要性。 放大第二点,由于大多数流行的编程语言起源和发展都采用英语为基础,这不仅使得英语成为全球范围内IT行业的通用语言,而且推动了非英语国家的学习者和专业人士去学习并掌握英语。这样的趋势…

    2024年4月27日
    1600
  • oa表单是什么意思

    OA表单指的是办公自动化系统中用以支持日常工作流程中表单电子化的文件,通常用于信息收集、数据提交、流程审批等场景。关键要素包括:1、数据收集界面;2、流程引擎;3、权限管理机制。这些远比传统纸质表单更高效,因为它通过数据集成与流程自动化,缩短处理时间并减少错误。特别是流程引擎,能够根据设定好的流程规…

    2024年1月11日
    38100
  • 车床编程出发点是什么意思

    车床编程的出发点主要是提高加工效率、保证加工精度和减少人为误差。其中,提高加工效率是一项重要指标,它直接关联到生产成本和交货时间。在现代制造业中,加工效率不仅体现在加工速度上,还体现在加工过程的自动化程度和对原材料的合理利用上。通过精心设计的车床编程,可以实现复杂部件的高效加工,减少机器的空闲时间,…

    2024年4月28日
    1100
  • ipd产品研发管理

    标题:IPD产品研发管理 IPD(集成产品开发)产品研发管理是一种跨学科的、系统化管理策略,旨在通过有效协调不同阶段任务、整合资源并利用交叉功能团队来优化产品从概念到市场的流程。在IPD策略中,1、策略规划至关重要,因为它确保产品研发与公司总体战略相契合;2、过程标准化为不同项目提供可复用的框架,节…

    2024年1月10日
    35600
  • 3d动画编程有什么用

    3D动画编程在当代技术领域的应用多样,包括1、娱乐产业发展、2、教育和训练、3、产品设计与模拟测试。尤其是在娱乐产业中,3D动画编程为电影、视频游戏以及虚拟现实提供了丰富的视觉效果和更加沉浸式的用户体验。通过编程创建的3D模型和动画能够模拟复杂的生物体运动和自然环境变化,给观众带来前所未有的观影体验…

    2024年4月29日
    1100
  • 计算机自动编程原理是什么

    自动编程的核心原理基于人工智能、大数据分析、机器学习、算法优化四个方面。在这四个方面中,算法优化起着至关重要的作用。算法优化指的是通过改进和调整编程算法,使得计算机程序的执行更加高效、资源利用最优化。这种优化可以在多个层面进行,包括代码层面的重构、算法复杂度的降低、以及执行路径的优化等。优秀的算法优…

    2024年4月27日
    1700
  • 无人机的编程是用什么语言

    无人机编程通常采用Python、C++等语言,其中Python因其简单易学和强大的库支持,在无人机编程中显得尤为突出。Python支持无人机的自动控制、路径规划、数据处理等多种功能,其灵活性和高效率使得开发者可以快速实现复杂的无人机应用。 一、PYTHON在无人机编程中的应用 Python是一种高层…

    2024年4月28日
    1200
  • 编程490分能上什么大学

    编程490分能上的大学选择繁多,包括需注重大学的排名、专业设置、地理位置、录取概率等因素。以中国的高考制度为例,这一分数通常位于一本和二本的分数线之间,因此,考生可根据自己的具体分数和所在省份的录取情况,来考虑报考的院校。重要的是要了解各高校的计算机科学与技术或相关专业的特色和优势,还需将个人兴趣和…

    2024年4月27日
    2800
  • 可编程芯片是什么

    可编程芯片,1、基于用户配置的专用电路,用于特定的计算任务或信号处理操作;2、高度灵活,能够通过软件重新配置以适应不同的应用场景;3、节省成本和时间,因为它们允许在产品设计阶段之后修改硬件功能,而无需更换物理组件。尤其在现代电子产品的研发中,可编程芯片提供了巨大的优势。 其中,基于用户配置的专用电路…

    2024年4月26日
    2600
  • 测试资源分配:有哪些需要注意的关键点

    在测试资源分配的过程中,存在一些关键点需要细致关注以确保有效性和高效率。1、项目需求的确切理解;2、资源的可用性与能力;3、测试计划的细化;4、风险管理;5、优先级的合理划分;6、持续监控与调整。确切地理解项目需求是基础,因为这直接关系到资源分配是否符合测试目标。资源的可用性及能力检查能保证分配的对…

    2023年11月22日
    35300

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部