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)

相关推荐

  • MYSQL如何利用MYSQL Shell安装 INNODB Cluster

    技术MYSQL如何利用MYSQL Shell安装 INNODB Cluster今天就跟大家聊聊有关MYSQL如何利用MYSQL Shell安装 INNODB Cluster,可能很多人都不太了解,为了让大家更加了解,小编

    攻略 2021年10月25日
  • 使用Ubuntu自带远程桌面

    技术使用Ubuntu自带远程桌面 使用Ubuntu自带远程桌面背景
    工作总偶尔需要使用到图形界面调试,对于不支持x11转发的程序无法依靠ssh -X实现,需要借助远程桌面工具。
    常用的平台包括 向日葵

    礼包 2021年11月7日
  • 如何理解mysqldump备份数据库

    技术如何理解mysqldump备份数据库这篇文章给大家介绍如何理解mysqldump备份数据库,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。mysqldump 用于导出mysql数据库的结构和数据。

    攻略 2021年10月25日
  • java线程思维导图是怎么样的

    技术java线程思维导图是怎么样的这篇文章将为大家详细讲解有关java线程思维导图是怎么样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。晚上在家利用二个小时时间整理了J

    攻略 2021年10月23日
  • 美国服务器:图床网站为什么一般首选美国机器

    技术美国服务器:图床网站为什么一般首选美国机器在搭建网站的过程中,图片起着至关重要的作用。鉴于它们的重要性,很多网站都会将高清图片存储在高质量的图床网站上,尤其是一些漫画类或者图片量比较大的论坛。因此,无论是自己搭建图床

    礼包 2021年10月30日
  • sapfiori工具有哪些(sap fiori锁定后怎么解锁)

    技术SAP Fiori里两种锁机制是怎么实现这期内容当中小编将会给大家带来有关SAP Fiori里两种锁机制是怎么实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。方法1: ETAG机

    攻略 2021年12月18日