什么是幂等问题?

什么是幂等问题?

先说下什么是幂等,幂等性是数学和计算机科学中的概念,用于描述操作无论执行多少次,都产生相同结果的特性。在软件行业中,广泛应用该概念。当我们说一个接口支持幂等性时,无论调用多少次,系统的结果都保持一致。

一般我们在系统中,幂等可能存在两种类型的问题:

  • 接口幂等:常说的接口防重复提交。

  • 消息队列幂等:如何保障消息队列客户端对相同的消息仅消费一次。

如果不做防重复提交或者幂等,可能会导致以下问题:

  1. 数据重复处理:如果用户在某个操作还在处理中时重复提交请求,可能会导致相同的数据被处理多次,造成数据的重复操作和处理逻辑的错误。

  2. 重复写入:在某些场景下,请求可能触发对数据库或其他存储系统的写入操作。如果请求被重复提交,可能会导致相同的数据被重复写入,破坏数据的一致性。

  3. 资源浪费:重复提交请求可能会导致服务器资源的浪费。如果请求处理的时间较长,重复提交会占用服务器的处理能力,增加服务器的负载,降低系统的性能和吞吐量。

  4. 业务逻辑错误:在某些业务场景下,重复提交可能会导致业务逻辑错误。例如,如果用户在生成订单的过程中重复提交订单请求,可能会导致生成多个相同的订单,引发订单的混乱和错误。

接口防重复提交

举个例子,你在淘宝上下单某个商品,然后提交订单时由于你快速点击多次,或者网络波动提交服务端多次请求,如果淘宝服务端没有做相关防重复提交处理,那么就有可能生成多笔相同的订单。

如果做了幂等处理,除了第一次正常请求外,第二次乃至更多次应该返回错误,比如说提示语“重复提交失败”等;再或者返回“提交成功”,但是真正保存数据库的只有一次请求。具体使用哪一种需要看程序设计以及产品逻辑。

消息队列消费幂等

消息队列在消息传递过程中,由于网络延迟、系统故障或其他异常情况,可能会导致消息被重复消费的问题。造成消息重复消费的问题比较多,我们就不细分析了,知道有这种场景就好。

通常情况下,我们认为消息中间件是一个可靠的组件。这里的可靠性指的是,只要消息被成功投递到了消息中间件,它就不会丢失,至少能够被消费者成功消费一次。这是消息中间件最基本的特性之一,也就是我们通常所说的 “AT LEAST ONCE”,即消息至少会被成功消费一遍。

这也就说明,如果服务端出现了客户端是否消费成功的疑问时,会让客户端再次消费。

造成的问题也比较明显,如果订单支付消息被重复消费,可能会导致业务逻辑的错误执行。例如,系统可能会多次发放优惠券、赠品或其他奖励,使得商家承担不必要的成本或资源浪费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nginx优化与防盗链【☆☆☆】

目录 一、用户层面的优化 1、隐藏版本号 方法一:修改配置文件 方法二:修改源码文件,重新编译安装 2、修改nginx用户与组 3、配置nginx网页缓存时间 4、nginx的日志切割 5、配置nginx实现连接超时 6、更改nginx运行进程数 7、开启网…

1 c++多线程创建和传参

什么是进程? 系统资源分配的最小单位。 什么是线程? 操作系统调度的最小单位,即程序执行的最小单位。 为什么需要多线程? (1)加快程序执行速度和响应速度, 使得程序充分利用CPU资源。 (2&…

Python 全栈体系【四阶】(五十八)

第五章 深度学习 十三、自然语言处理(NLP) 3. 文本表示 3.1 One-hot One-hot(独热)编码是一种最简单的文本表示方式。如果有一个大小为V的词表,对于第i个词 w i w_i wi​,可以用一个长度为V的向量来表示…

【设计模式】行为型设计模式之 模板方法模式

介绍 GOF 定义 模板方法模式 Template Method Design Pattern :模板方法模式在一个方法中定义一个算法骨架,并将某些步骤推迟到子类中去实现;模板方法在不改变算法整体结构的情况下,可以重新定义算法中的某些步骤。 代码举例 …

npm install 的原理

1. 执行命令发生了什么 ? 执行命令后,会将安装相关的依赖,依赖会存放在根目录的node_modules下,默认采用扁平化的方式安装,排序规则为:bin文件夹为第一个,然后是开头系列的文件夹,后…

Linux网络诊断工具mtr命令详解

目录 一、mtr概述 二、mtr的特点 1、动态路由显示 2、数据包类型 3、显示延迟和丢包 4、过滤和日志 5、网络探测 三、基本用法 1、基本语法 2、帮助 3、常用选项 四、输出解释 1、常见mtr命令及其输出 2、输出解释 四、命令实例 1. 最基本的用法 2. 显示报告形式…

SpringBoot 配置事务

SpringBoot 在启动时已经加载了事务管理器,所以只需要在需要添加事务的方法/类上添加Transactional即可生效,无需额外配置。 TransactionAutoConfiguration 事务的自动配置类解析: SpringBoot 启动时加载/META-INF/spring/org.springframewor…

⑤单细胞学习-cellchat组间通讯差异分析

④-1单细胞学习-cellchat单数据代码补充版-CSDN博客 ④-2单细胞学习-cellchat单数据代码补充版(通讯网络)-CSDN博客 参考: 1:单细胞分析之细胞交互-3:CellChat - 简书 (jianshu.com) 2:CellChat细胞通讯…

帕友的小贴士,锻炼

帕金森病作为一种慢性神经系统疾病,对患者的生活质量产生了深远的影响。虽然医学界对于帕金森病的治疗仍在不断探索,但合理的锻炼已经被证实是改善患者症状、提高生活质量的有效途径之一。本文旨在为帕金森病患者推荐一些适合的锻炼方法,帮助…

c#未能加载基类System错误 这台计算机上缺少此项目引用的 NuGet 程序包

拷贝代码到另一台计算机运行,打开Form1.cs报错 首先确认package的框架 如果是472,则更换472的框架 打开项目->xx属性,进行修改 如果框架正确,就是未识别到程序包 可以参考: https://www.cnblogs.com/txwtech/p/1…

WPF真入门教程32--WPF数字大屏项目实干

1、项目背景 WPF (Windows Presentation Foundation) 是微软的一个框架,用于构建桌面客户端应用程序,它支持富互联网应用程序(RIA)的开发。在数字大屏应用中,WPF可以用来构建复杂的用户界面,展示庞大的数据…

day31贪心算法part01| 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

**455.分发饼干 ** 视频讲解 | 力扣链接刚开始想到的&#xff0c;但是这样太暴力了&#xff0c;太笨了 class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 胃口g 饼干尺寸sint result 0;sort(s.begin(), s.end());…

后方碰撞预警系统技术规范(简化版)

后方碰撞预警系统技术规范(简化版) 1 系统概述2 预警区域3 预警目标4 功能需求功能条件5 显示需求6 指标需求1 系统概述 后方碰撞预警系统RCW(Rear Collision Warning)是在后方车辆即将与自车发生碰撞之前,激活危险警告灯以较高频率闪烁,从而吸引后方驾驶员的注意力,避免…

mysql 数据库datetime 类型,转换为DO里面的long类型后,只剩下年了,没有了月和日

解决方法也简单&#xff1a; 自定义个一个 Date2LongTypeHandler <resultMap id"BeanResult" type"XXXX.XXXXDO"><result column"gmt_create" property"gmtCreate" jdbcType"DATE" javaType"java.lang.Long&…

44【Aseprite 作图】樱花丸子——拆解

1 枝干 2 花朵&#xff1a;其实只要形状差不多都行&#xff0c;有三个颜色&#xff0c;中间花蕊颜色深一点&#xff0c;中间花蕊外的颜色偏白&#xff1b;不透明度也可以改一下&#xff0c;就变成不同颜色 3 丸子 最外层的颜色最深&#xff0c;中间稍浅&#xff0c;加一些高光…

ISO 19115-2:2019 附录 A(规范性附录)一致性

A.1 概述 本文件中的抽象测试套件包括 ISO 19115-1:2014 中通过引用定义的抽象测试套件。符合本文件的元数据应满足 ISO 19115-1:2014 的一致性要求,并应按本文件第 6 章和附录 B 规定提供。用户定义的元数据应按 ISO 19115-1:2014 附录 C 的规定定义和提供。用户定义的元数据…

2024全国大学生数学建模竞赛优秀参考资料分享

0、竞赛资料 优秀的资料必不可少&#xff0c;优秀论文是学习的关键&#xff0c;视频学习也非常重要&#xff0c;如有需要请点击下方名片获取。 一、赛事介绍 全国大学生数学建模竞赛(以下简称竞赛)是中国工业与应用数学学会主办的面向全国大学生的群众性科技活动&#xff0c;旨…

修复损坏的Excel文件比你想象的要简单,这里提供几种常见的修复方法

打开重要的Excel文件时遇到问题吗?Microsoft Excel是否要求你验证文件是否已损坏?Excel文件可能由于各种原因而损坏,从而无法打开。但不要失去希望;你可以轻松修复损坏的Excel文件。 更改Excel信任中心设置 Microsoft Excel有一个内置的安全功能,可以在受限模式下打开有…

非比较排序之计数排序

1. 了解计数排序 计数排序是一个非基于比较的排序算法&#xff0c;该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时&#xff0c;它的复杂度为Ο(nk)&#xff08;其中k是整数的范围&#xff09;&#xff0c;快于任何比较排序算法。当然这是一…

MySQL数据库的基础:逻辑集合数据库与表的基础操作

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人能接…