java八股-分布式服务的接口幂等性如何设计?

文章目录

原文视频链接:讲解的流程特别清晰,易懂,收获巨大

【新版Java面试专题视频教程,java八股文面试全套真题+深度详解(含大厂高频面试真题)】

https://www.bilibili.com/video/BV1yT411H7YK/?p=56\&share_source=copy_web\&vd_source=afbacdc02063c57e7a2ef256a4db9d2a

接口幂等

token + Redis

第一次请求:这里是我们点击进去某个商品页面,就会向服务端发送请求,请求获取token,这里服务端接受到请求之后吧token存储到Redis里面,接着返回token到客户端。

第二次请求:这里我们假如手贱多按了几次,提交订单,导致后面发送了好几次请求。其中只有1次是成功的,原因如下,请求req带token去服务端,服务端验证token是否存在,存在则删除token,删除了之后,其他多余的请求req来了个之后发现token没了,只能返回失败的结果,因此只有1个请求是能够被Redis验证为token存在,然后真的扣钱支付成功的!!

分布式锁

采用trylock的方式,非阻塞锁,只有能抢到锁的线程能执行完毕,这个也是保证了接口的幂等性,其余线程全部失败

相关推荐
程序员小假9 小时前
我们来说一下消息的可靠性投递
java·后端
席之郎小果冻9 小时前
【04】【创建型】【聊一聊,建造者模式】
java·前端·建造者模式
原来是好奇心9 小时前
深入Spring Boot源码(四):Starter机制与依赖管理深度解析
java·源码·springboot·starter
阿杆9 小时前
如何在 Spring Boot 中接入 Amazon ElastiCache
java·数据库·redis
cheems95279 小时前
锁策略的介绍
java·开发语言
武子康9 小时前
Java-199 JMS Queue/Topic 集群下如何避免重复消费:ActiveMQ 虚拟主题与交付语义梳理
java·分布式·消息队列·rabbitmq·activemq·mq·java-activemq
LSL666_10 小时前
12 MyBatis的连接池
java·服务器·mybatis
Arva .10 小时前
说说线程的生命周期和状态
java·开发语言
tryxr10 小时前
HashTable、HashMap、ConcurrentHashMap 之间的区别
java·开发语言·hash
无事好时节10 小时前
Linux 线程
java·开发语言·rpc