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)

相关推荐

  • ADO.NET连接数据库使用是怎样的

    技术ADO.NET连接数据库使用是怎样的本篇文章为大家展示了ADO.NET连接数据库使用是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。如果我们利用Command 对象所执

    攻略 2021年12月1日
  • 医保跨省转移,如何异地转移社保和医保

    技术医保跨省转移,如何异地转移社保和医保医保跨省转移手续:首先要在原参保地办理医疗保险关系注销手续,然后由本人向市社保中心提出医疗保险关系转移申请医保跨省转移;凭转出地经办机构出具的《参保(合)凭证》以及原参保地医疗保险

    生活 2021年10月31日
  • win7系统安装SQLServer2000的步骤是什么呢

    技术win7系统安装SQLServer2000的步骤是什么呢本篇文章给大家分享的是有关win7系统安装SQLServer2000的步骤是什么呢,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,

    攻略 2021年12月1日
  • 春节来历50字,春节贴对联的由来50字

    技术春节来历50字,春节贴对联的由来50字春联作为一种独特的文学形式,在我国有着悠久的历史春节来历50字。它从五代十国时开始,明清两代尤为兴盛,发展到今天已经有一千多年了。早在秦汉以前,我国民间每逢过年,有在大门的左右悬

    生活 2021年11月1日
  • java中抽象类和接口的区别(java接口和抽象类有什么不同)

    技术java中抽象类和接口的相同和不同点是什么这篇文章将为大家详细讲解有关java中抽象类和接口的相同和不同点是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。前言下面

    攻略 2021年12月20日
  • 云呐统一运维一体机|工单管理系统智能化运维解决方案

    技术云呐统一运维一体机|工单管理系统智能化运维解决方案 云呐统一运维一体机|工单管理系统智能化运维解决方案运维管理软件集成了事件标准流程机制管理(主管分发、系统分发、工程师自建、用户报修)、事件SLA分

    礼包 2021年12月22日