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)

相关推荐

  • sapfiori工具有哪些(sap fiori锁定后怎么解锁)

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

    攻略 2021年12月18日
  • adj,English~~~~~~

    技术adj,English~~~~~~不定式和ing分词都可以做主语adj,注意几点:a)陈述句中:两者没什么区别。但在口语中,ing分词用的比不定式多。b)疑问句中:总是使用ing分词作主语
    c)否定句中:必须使用in

    生活 2021年10月21日
  • 数据库rac脚本(rac里面能创建几个数据库实例)

    技术怎么复制一个RAC CDB数据库本篇内容介绍了“怎么复制一个RAC CDB数据库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年12月21日
  • 数学什么叫因数,小学数学什么是倍数,什么是因数

    技术数学什么叫因数,小学数学什么是倍数,什么是因数①一个整数能够被另一整数整除数学什么叫因数,这个整数就是另一整数的倍数。如15能够被3或5整除,因此15是3的倍数,也是5的倍数。②一个数除以另一数所得的商。如a÷b=c

    生活 2021年10月23日
  • 描写梨花的优美古诗,几句赞美梨花的优美语句

    技术描写梨花的优美古诗,几句赞美梨花的优美语句1、清晨,白璧无瑕,大地从沉睡中清醒,梨花也充满着蓬勃的朝气描写梨花的优美古诗。梨花没有玫瑰的妖娆美丽,没有菊花的傲然脱俗,然而它却是我最喜爱的花,雪白的花瓣在露珠的清洗下变

    生活 2021年10月29日
  • 君越怎么样,君越的优点和缺点是什么

    技术君越怎么样,君越的优点和缺点是什么展开全部 1、车体宽大君越怎么样,大气,外形给人一种豪华上档次的感觉。 2、有全新四缸全铝发动机,据说油耗在6.2升/100公里/90公里等速,如果能真的达到这个标准,我感觉应该非

    生活 2021年10月25日