当前位置: 首页 > news >正文

幂等性 如何通过设计避免重复操作的影响

概述

定义

幂等概念来自数学,表示对数据源做N次变换和1次变换的结果是相同的。

在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数或幂等方法是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。简单理解就是,一个逻辑即使被重复执行多次,也不影响最终结果的一致性,这叫幂等。

  1. 幂等包括第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。幂等关注的是以后的多次请求是否对资源产生了副作用,而不关注结果。
  2. 网络超时等问题,不是幂等的讨论范围。
  3. 幂等性是系统服务对外一种承诺,而不是实现,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。

接口幂等性

在HTTP/1.1中,对幂等性进行了定义。它描述了一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外),即第一次请求的时候对资源产生了副作用,但是以后的多次请求都不会再对资源产生副作用。这里的副作用是不会对结果产生破坏或者产生不可预料的结果。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。

为什么要实现幂等

  • 前端重复提交表单: 在填写表单时候,用户填写完成提交,很多时候会因网络波动没有及时对用户做出提交成功响应,致使用户认为没有成功提交,然后一直点提交按钮,这时就会发生重复提交表单请求。
  • 用户恶意进行刷单: 例如在实现用户投票这种功能时,如果用户针对一个项目进行重复提交投票,这样会导致接口接收到用户重复提交的投票信息,这样会使投票结果与事实严重不符。
  • 接口超时重复提交: 很多时候 HTTP 客户端工具都默认开启超时重试的机制,尤其是第三方调用接口时候,为了防止网络波动超时等造成的请求失败,都会添加重试机制,导致一个请求提交多次。
  • 消息进行重复消费: 当使用 MQ 消息中间件时候,如果发生消息中间件出现错误未及时提交消费信息,导致发生重复消费。

无需幂等的操作

查询操作:

相关文章:

  • Springboot统一功能处理
  • [VMware]卸载VMware虚拟机和Linux系统ubuntu(自记录版)
  • NTS库学习,找bug中......
  • docker高级
  • AI agent(以AutoGPT为例)和AI Workflow 区别
  • 【PyTorch】2024保姆级安装教程-Python-(CPU+GPU详细完整版)-
  • leetcode刷题-动态规划08
  • MYSQL数据备份与恢复(mysqldump)
  • 青少年编程与数学 02-010 C++程序设计基础 11课题、程序结构
  • 8_安装Thrift
  • jsonp
  • 采样算法二:去噪扩散隐式模型(DDIM)采样算法详解教程
  • SpringBoot-配置优先级
  • vue中computed方法使用;computed返回函数
  • (新版本onenet)stm32+esp8266/01s mqtt连接onenet上报温湿度和远程控制(含小程序)
  • CST的UAV无人机RCS --- A求解器 - 一维距离像(HRRP)和正弦图(Sinogram)
  • 01背包之---应用篇
  • JS 获取星期几
  • 基于AI人工智能UI自动化测试工具:Midscene
  • A*算法超级详细讲解
  • 那个网站做外贸最好/5g站长工具seo综合查询
  • 广东省建设厅安全员b证报名网站/深圳最新疫情最新消息
  • 上海建设网站是国家级吗/品牌seo如何优化
  • wordpress调用页面标题/北京网站优化专家
  • 朝阳区网站开发公司/各大网站收录提交入口
  • 随州网站建设哪家专业/百度一下你就知道了百度一下