Java后端接口幂等的方案
admin
2024-04-15 17:20:05
0

原文网址:Java后端接口幂等的方案_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍Java后端接口幂等的方案。

        接口幂等也是Java后端面试中常见的问题。

幂等的含义

        对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。

        对于查询操作,它自然是幂等的,不会对系统资源造成影响。

        对于添加和修改操作,就要控制幂等性。

为什么需要幂等

以创建订单为例进行说明:

        一个订单创建接口,第一次调用超时了,然后调用方重试了一次。虽然第一次超时了,但是实际可能创建成功了,再次调用接口重试,这时就会调用2次创建接口,会创建2个订单。

        我们重试是想有一次成功的请求,如果真的减去2次库存,那就不满足需求。

何时会触发重试

        实际上,这种重试一般发生在框架中,比如:RPC框架、MQ。

幂等的方案

如下方案可以多个一起使用。

方案1:分布式锁

概述

        对这个请求的某个唯一值进行锁定。

详述

        对于保存接口,很难判断这两次请求是由于重试导致的,不好对业务加锁。解决方案有:

  1. 使用链路追踪工具的traceId,比如:skywalking
  2. 对所有的请求都添加一个唯一的id,比如雪花算法id

方案2:数据库唯一索引

例1:注册用户

        将用户名的数据库字段设置唯一索引。

例2:创建订单

        将用户名+商品id+付款状态设置唯一索引。即:用户的未付款的某种商品只能有一个。

相关内容

热门资讯

《艾森霍恩异形审判官》图文攻略... 第1页:第一章-行列212(1)展开在《艾森霍恩异形审判官》中,玩家需要扮演一位名叫Eisenhor...
《无人深空》图文攻略 系统教程... 第1页:系统教程-操作键位与界面展开《无人深空》是一款太空题材以探索生存为主游戏,玩家将自由的探索几...
《罪恶装备启示者》全中文剧情解... 第1页:第一期展开《罪恶装备启示者》作为《罪恶装备》的最新作,在继承了前作的操作系统以及操作角色的前...
《无人深空》白金攻略 全成就图... 第1页:前言和白金流程展开《无人深空》是近期发布的一款关于宇宙探索的游戏,由于刚刚发售导致部分玩家可...
《侠客风云传》1.029招式大... 第1页:杜康鸡神功展开在《侠客风云传》1.029版中,一些招式的获得方法和效果发生了改变,同时新增了...
《伊苏8》全地区怪物属性及掉落... 第1页:不知名海岸展开《伊苏8》中文版发布后,大家玩得更加流畅了吧,下面为大家带来中文版的《伊苏8》...
《方舟生存进化》原始DLC视频... 第1页:第一期-偏远山区搞个木筏敲点铁展开《方舟生存进化》是一款非常有意思的生存游戏,游戏的新DLC...
《饥荒》韦伯(蜘蛛人)教学向玩... 第1页:展开《饥荒》韦伯可是个非常可爱的人物,很多玩家都喜欢他,今天就为大家带来了饥荒韦伯教学向玩法...
《拳皇14》终极BOSS沃斯必... 第1页:展开《拳皇14》终极BOSS沃斯已经公布,大家终于可以一睹真容!下面为大家带来《拳皇14》终...
《辐射4》核子世界DLC预告视... 第1页:展开《辐射4》核子世界DLC被确定为辐射4最后一个DLC,今天就为大家带来了辐射4核子世界D...