解决幂等问题,只需要记住这个口诀!

告诉你一句七字口诀,索引失效能记住一辈子 索引失效问题是面试必问问题,因为索引失效的情况比较多,很多同学记不住,面试的时候回答不好。我仔细研究了七七四十七天,设计了一句七字口诀,记住这句口诀,以后再遇到这个问题就可以拿满分了。 七字口诀就是:模 型 数 空 运 最 快 口诀字面意思就是,要运送一个产品模型的话,要用空运,不要用陆运和海运,数空运最快。叫做:模型数空运最快。 下面我拆开逐字讲解一下:模:模糊查询的意思。like的模糊查询以%开头,索引失效。比如: SELECT * FROM `user` WHERE `name` LI... 阅读详情

作为开发人员,我们每天都要开发大量的接口,其中包括了读接口和写接口,而对于写接口来说,除了要保证他的性能、可用性以外,还需要有一个重要的问题,那就是考虑如何保证接口的幂等性。

幂等性

什么是幂等性?

"幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。 这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。"

以上是百度百科中的回答,总结起来就是一句话:一个接口,不管我调多少次,只要参数不变,结果也应该不变。

但是,实际在工作中,谈到幂等性,一般分为两种,即请求幂等和业务幂等

请求幂等:每次请求,如果参数一样,结果也要一样。

业务幂等:同一次业务请求,再拿到最终状态之后的每次请求,结果要保证一样。再没拿到最终状态之前,每一次请求需要正常执行业务逻辑,直到推进到最终状态。

一般来说,我们谈到的幂等性,大部分都是业务幂等。比如,一次支付请求,如果支付返回处理中,或者系统异常等,我们需要重试,继续调用,直到他明确的返回支付成功,或者明确的无法成功的支付失败结果。

如何保证幂等

想要保证幂等性,最简单的做法就是:在做业务操作之前,先查一下,判断下本次操作是否有被执行过,如果执行过,则不再执行,否则继续执行。

但是,这个方案存在一个关键性的问题,那就是在高并发场景中,是可能会有幂等击穿的。

所以,想要解决好这个问题,需要做好并发控制,那么,做并发控制,大家首先想到的就是锁,没错。就是要用锁。

那么,解决幂等问题,请记住这个口诀:”一锁、二判、三更新”

一锁、二判、三更性

“一锁、二判、三更新”,只要严格遵守这个过程,那么就可以解决并发问题。

一锁:第一步,先加锁。可以加分布式锁、或者悲观锁都可以。但是一定要是一个互斥锁!


二判:第二步,进行幂等性判断。可以基于状态机、流水表、唯一性索引等等进行重复操作的判断。


三更新:第三步,进行数据的更新,将数据进行持久化。

三步需要严格控制顺序,确保加锁成功后进行数据查询和判断,幂等性判断通过后再更新,更新结束后释放锁。

以上操作需要有一个前提,那就是第一步加锁、和第二步判断的时候,需要有一个依据,这个就是幂等号了,通常需要和上游约定一个唯一ID作为幂等号。然后通过对幂等号加锁,再通过幂等号进行幂等判断即可。

一锁这个过程,建议使用Redis实现分布式锁,因为他是非阻塞的高效率的互斥锁。非常适合在幂等控制场景中。

二判这个过程,如果有操作流水,建议基于操作流水做幂等,并将幂等号作为唯一性约束,确保唯一性。如果没有流水,那么基于状态机也是可以的。

但是不管怎么样,数据库的唯一性约束都要加好,这是系统的最后一道防线。万一前面的锁失效了,这里也能控制得住不会产生脏数据。

什么是幂等性?如何解决幂等性问题? 本文讲解了什么是幂等性、幂等性的场景以及如何解决幂等性问题 阅读详情

相关推荐

泛微Ecology9接口调用全流程:从配置到实战Java代码解析

本文详细解析了泛微Ecology9系统接口的完整调用流程,涵盖安全架构、服务端配置与客户端Java实战代码。重点阐述了基于RSA加密的认证机制、Token管理策略,并提供了企业级集成的核心代码示例与生产环境调优建议,帮助开发者安全、高效地实现系统对接。

m9n0o的博客 838

最系统的幂等性方案:一锁二判三更新

所谓幂等性,就是一次操作和多次操作同一个资源,所产生的影响均与一次操作的影响相同。"幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。维基百科的幂等性定义如下:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。

竹林幽深 2259

java 对接工行聚富通H5聚合支付接口

java 对接工行聚富通H5聚合支付接口

lgl的博客 859

支付宝防并发方案之"一锁二判三更新"

每年支付宝在双11和双12的活动中,都展示了绝佳的技术能力。这个能力不但体现在处理高TPS量的访问,更体现在几乎不会出错,不会出现重复支付的情况,那这个是怎么做到的呢? 诚然,为了实现在高并发下仍不会出错的技术目标,支付宝下了很多功夫,比如幂等性的处理,分布式事务的使用等等,但是个人觉得其中最关键的一点就是“一锁二判三更新”这句看似毫不起...

weixin_34270865的博客 608

从零搭建风电场:手把手教你用WAsP+WindPRO完成风资源评估全流程

本文详细介绍了从零开始搭建风电场的全流程,重点讲解如何使用WAsP和WindPRO进行风资源评估和风场布局优化。内容包括软件配置、数据采集规范、风图谱建模实战、机组选型策略以及常见问题解决方案,帮助工程师掌握风电开发的核心技术,提升项目成功率。

year5的博客 371

从零开始搭建多旋翼无人机:飞控系统配置全攻略(含IMU校准技巧)

本文详细介绍了从零开始搭建多旋翼无人机的飞控系统配置全流程,重点解析了IMU校准技巧。涵盖飞控硬件选型、IMU校准(加速度计、陀螺仪、磁力计)、GPS与罗盘集成方案、飞行模式配置策略及实战故障排查手册,帮助DIY爱好者提升无人机飞行稳定性与安全性。

beta5的博客 798

支付宝防并发方案之“一锁二判三更新“

高并发遵循一锁二判三更新四释放

weixin_38259248的博客 1517

iOS应用突然无法从App Store获取到内购(IAP)产品列表的解决

问题现象 Apple开发中,在应用中嵌入内购(IAP)功能的小伙伴们可能会发现,吃着火锅唱着歌,突然App就无法获取到产品列表了,而且产品请求操作并不会返回任何错误。 此时检查发现,并没有对App的内购逻辑做任何改动。 那么,这是什么原因导致的呢? Let’s find out!???? 问题分析 1. 排除其它原因 首先,你先得排除不是你IAP内购逻辑变更或其他原因导致的。 在SKProductsRequestDelegat代理实现的productsRequest方法里下断点: func produc

享受开发,颠倒银河 6142

计算机基础知识常用口诀,三句口诀!记住大部分常用的电脑快捷键!

快捷键那么多,每一个都看一下,用一次又忘了,反复看也是有点麻烦。有没有好一点的方法,把最最常用的快捷键快速记住呢?当然是有的,方法很简单,只需要掌握三句口诀,就能轻松搞定大部分常用的快捷键。不信?来看!01口诀一:要快就得在一起为什么要快就得在一起呢?我们来看这一组「复制粘贴」快捷键:这一组是我们最常用的快捷键,以至于我们闭着眼睛都能够完成。不过大家是否有发现这三个按键中的【C】、【V】、【X】是...

weixin_35057804的博客 1万+

玩转企业微信群机器人:一份超详细的Webhook消息推送指南

企业微信群机器人是一个连接内部协作与外部服务的强大桥梁。通过灵活运用本文介绍的各种消息类型,你可以构建出丰富多彩、信息明确的自动化通知系统,极大地提升团队沟通效率。现在,就动手试试,将你的第一个机器人集成到工作流中吧!如果你有任何有趣的机器人应用场景或遇到了问题,欢迎在评论区留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3978

【图像去噪】论文复现:灵感源自MAE!进一步解决BSN的局限性,破坏真实噪声的空间相关性!AMSNet的Pytorch源码复现,跑通源码,原理详解!

论文题目:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising —— 自监督真实图像去噪的非对称掩码方案【图像去噪】论文精读:Asymmetric Mask Scheme for Self-Supervised Real Image Denoising(AMSNet)AMSNet是基于PyTorch Lightning CLI深度学习框架编写的,比较适合复杂的大型任务,复用很方便,但是安装和环境配置问题太多。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 546

一句口诀记住 OSI七层协议模型

Please Do Not Tell Stupid People Anything 今天复习计算机网络 七层协议模型 不是忘了 就是记串了 学了一句 口诀 一下子能记住 七层协议模型 口诀 Please Do Not Tell Stupid People Anything 还是句英文 的口诀 Please P 物理层 Physical Do D 数据链路层 Data Link Not N 网络层 Network Tell T

韩旭051的博客 2万+

lammps教程:ovito免费输出高清图片方法

基本原理是调用ovito软件包中的TachyonRenderer模块,该模块可实现Tachyon渲染,达到和ovito 2.9 Tachyon完全相同的效果。这种方法在后来的ovito版本中已经不能使用,但是ovito 2.9版本在后处理方面功能较少,使用起来也不是特别方便。在之前的推文中,曾介绍过使用ovito 2.9版本更换Tachyon渲染器实现高清图片的输出。这个方法只需要配置ovito模块即可,完全免费,不需要购买ovito pro版。具体的配置参数可到ovito官网查询。大家好,我是小马老师。

lammps_jiayou的博客 2768

解决幂等问题

作为开发人员,我们每天都要开发大量的接口,其中包括了读接口和写接口,而对于写接口来说,除了要保证他的性能、可用性以外,还需要有一个重要的问题,那就是考虑如何保证接口的幂等性。“幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

hello.reader 2037

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

幼儿园带括号算式口诀_记住这三十个口诀,初中数学提分不用愁!

很多孩子在面对数学这个科目都是无能为力,感觉无从下手,高分对于自己的孩子来说,简直就是一个梦。把下面这些口诀背熟,就能掌握数学基础知识。从现在起,不要再去羡慕别人家孩子的高分了,其实你家孩子也可以,只要找对了记忆方法,对着习题不断练习,你的孩子也可以修炼成学霸!1.有理数的加法运算同号相加一边倒;异号相加“大”减“小”,符号跟着大的跑;绝对值相等“零”正好。[注]“大”减“小”是指绝对值...

weixin_39669769的博客 3379

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

记住三句话,就会用双拼(韵母键快速记忆口诀)

新口诀出来了,快去看看吧: 来无蛙双拼口诀(新) https://blog.youkuaiyun.com/ycjnx/article/details/90697044 //以下是老口诀原文: 一、哪三句话? 救驾哦,圆月迎,顺畅获魂。 卡空旷,垦坑亢,坎烤开。 忒贴条,推投银钱。 记住上面三句话,你就会用双拼了(自然码方案),真的这么神奇吗?当然。二、这三句话是什么意思? 双拼中最难记的就是20多个韵母...

阿江的故事 7万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

数据结构篇——五分钟带你记住常见排序算法口诀

一、前言 二、引言 1、概念 2、与生活相关

ac不知深的博客 5358

4句口诀记住《和差化积、积化和差》的8个公式【自创】

今天早上盯着笔记本上写的这8个公式忽然悟出来的4句口诀,真的很好记

课题分离 5864

如何解决幂等问题!

幂等性

baidu_28370189的博客 433

设计模式——速记口诀

3,行为型模式有十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式---口诀:多次命令和责备中,车模见状慌忙解开(衣服)解释:带(代理模式)上适(适配器模式)当的装(装饰模式)备组(组合模式)合可以让外(外观模式)国侨(桥接模式)胞享(享元模式)受(游戏)解释:多次(迭:多次的意思,迭代模式)命(命令模式)令和责(责任链模式)备(备忘录模式)中(中介者模式),车(策略模式)解释:这句话讲的就是看房子的经过。

xm-love-mq的博客 1240

实用的自然码双拼口诀

今天给大家介绍一个实用的自然码双拼口诀——来无蛙双拼口诀。   掌握自然码双拼输入法的难点是将其26个韵母对应的字母键位记忆到脑海中,比如:ai韵母对应于L键,an韵母对应于J键。假如你没记住对应关系,那么双拼输入也就无从谈起了。通过背诵双拼口诀,你可以很快的想起对应关系,如:来鸡蛋夯烤,把这句口诀注上拼音:来(Lai)鸡蛋(Jan)夯(Hang)烤(Kao),此时你就会找出:ai韵母对应于L键,...

阿江的故事 2万+

记住一句口诀就会冒泡排序

冒泡排序 冒泡排序口诀: - 外层循环 n-1 - 内层循环 n-1-i - 两两比较做交换 public class MaoPao { public static void main(String[] args){ int a[] = {24,3,8,4,200,88,99}; System.out.println("排...

万物皆可学 3万+

记住这些高中物理口诀,物理考试还能再提高20分!

想要在高中物理上面取得好成绩,记口诀这部分可不能丢,今天质心姐姐就为大家整理出一下高中物理口诀,感觉不错的可以点赞+收藏+分享哦~更多资讯在质心物理竞赛网查看。 动量定理解题 动量定理来解题,矢量关系要牢记,各量均把正负带,代数加减万事吉,中间过程莫关心,便于求解平均力. 动量守恒 所受外力恒为零,系统动量就守恒,碰前碰后和碰中,动量总和都相同,矢量关系别忘记,谁正谁负要分清. 力的作用效果 时间积累动量增,空间积累增动能,瞬间产生加速度,改变状态或变形. 动量定理 · 动能定理 动量动能二定理,解起题来特

qq_39015551的博客 5706

函数平移口诀_数学学习:把这些口诀背熟!

有理数的加法运算同号相加一边倒;异号相加“大”减“小”,符号跟着大的跑;绝对值相等“零”正好。[注]“大”减“小”是指绝对值的大小。合并同类项合并同类项,法则不能忘,只求系数和,字母、指数不变样。去、添括号法则去括号、添括号,关键看符号,括号前面是正号,去、添括号不变号,括号前面是负号,去、添括号都变号。一元一次方程已知未知要分离,分离方法就是移,加减移项要变号,乘除移了要颠倒。恒等变换...

weixin_30800615的博客 1993
上一篇: 华为、小米、OPPO、vivo 联手,快充终于要统一了?!
下一篇: 编程语言比较:C 和 Go
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值