Java高并发下怎么保证接口的幂等性

技术Java高并发下怎么保证接口的幂等性本篇内容介绍了“Java高并发下怎么保证接口的幂等性”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

本文介绍了“如何保证Java高并发下接口的幂等性”的知识。很多人在实际案例的操作中会遇到这样的困难。让边肖带领你学习如何处理这些情况。希望大家认真阅读,学点东西!

前端保证幂等性的方法

按钮只能点击一次

用户点击按钮后,按钮将变灰或显示加载状态。

RPG模式

也就是Post-Redirect-Get,当客户端提交表单时,它执行客户端重定向并转到成功提交的页面。避免了按F5刷新导致的重复提交,也消除了按浏览器后退按钮导致的重复提交。目前大部分公司都是这样做的,比如淘宝、JD.COM。

后端保证幂等性的方法

使用唯一索引

向业务的唯一字段添加唯一索引,这样当数据被复制时,将其插入数据库将引发异常。

状态机幂等

如果业务需要修改订单状态,例如订单状态为待付款、正在付款、付款成功、付款失败。在设计中最好只支持状态的单向改变。这样在更新的时候可以增加条件,多个调用只会执行一次。例如,如果您想要更新订单状态以支持成功,则先前的状态必须是“付款”。

Updatetable_namesetstatus=成功付款,其中status=付款中的乐观锁实现幂等

查询数据以获取版本号。

按版本号更新,如果版本号匹配则更新,如果版本号不匹配则不更新。

-如果找到的版本是1。

-如果查询的版本是1,选择versionfromtable _ name,其中whereuserid=10-在用户账户中增加10个updatetable _ name etmoney=money-10,version=version1其中userid=10,version=1,乐观锁定也可以通过条件实现。例如,库存不能超卖,数量不能小于0。

updatetable _ name setnum=num-10 where num-10=0防重表

添加一个防重复表,以业务的唯一id作为唯一索引,如订单号。当您想要对订单执行一系列操作时,可以将记录插入到防重复表中。如果插入成功,则进行后续操作,如果插入失败,则不进行后续操作。本质上可以看作是基于MySQL的分布式锁。根据业务场景,决定执行成功后是否删除防重复表中对应的数据。

分布式锁实现幂等

执行该方法时,首先根据业务的唯一id获取分布式锁,成功则执行,失败则不执行。分布式锁可以基于redis、zookeeper和mysql实现,所以就不介绍分布式锁的细节了。

select+insert

首先检查有没有符合要求的数据,如果没有,再插入。在没有并发的系统中可以保证幂等性。不要在高并发下使用此方法,这也会导致重复插入数据。一般我做消息幂等的时候,先选择,有数据直接返回,分布式锁没有数据插入。

全局唯一号实现幂等

判断请求是否被seq (source)重复,如果重复,直接返回请求重复提交,否则执行。例如,当多个三方系统调用服务时,可以采用这种方法。

这里介绍了“如何保证Java高并发下接口的幂等性”的内容。感谢您的阅读。如果你想了解更多行业,关注网站,边肖将为大家输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/57099.html

(0)

相关推荐

  • 染发剂什么牌子最好,用什么牌子的染发剂最安全方便

    技术染发剂什么牌子最好,用什么牌子的染发剂最安全方便很多妹子都喜欢经常换各种各样的发色染发剂什么牌子最好,我舍友就是这样一个经常折腾的妹子,在她的带动下我也染过几次,她用过的染发剂真的是比我见过的都多。不过我专门去了解了

    生活 2021年10月22日
  • js中判断字符串时间类型大小(js中如何判断时间大小写)

    技术怎样用JS判断日期数字整数和特殊字符怎样用JS判断日期数字整数和特殊字符,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。如何在用一个程序检测所输入的内

    攻略 2021年12月14日
  • PHP+Redis怎么实现点赞效果

    技术PHP+Redis怎么实现点赞效果这篇文章主要介绍“PHP+Redis怎么实现点赞效果”,在日常操作中,相信很多人在PHP+Redis怎么实现点赞效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年11月30日
  • keil如何下载至单片机(keil5 hex文件怎么下载到单片机)

    技术KeilC51基础中如何生成可以下载到单片机的Hex文件KeilC51基础中如何生成可以下载到单片机的Hex文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个

    攻略 2021年12月24日
  • EditPlus密钥算法源码是怎么样的

    技术EditPlus密钥算法源码是怎么样的这篇文章主要为大家展示了“EditPlus密钥算法源码是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“EditPlus密钥算

    攻略 2021年11月23日
  • jvm内存结构及原理(jvm内存结构讲解)

    技术JVM内存的结构是怎样的这篇文章主要介绍“JVM内存的结构是怎样的”,在日常操作中,相信很多人在JVM内存的结构是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JVM内存的结构是

    攻略 2021年12月21日