常见场景题-幂等性该如何设计?

幂等性如何设计?

答:幂等性的设计有以下几种方案:

方案一:唯一索引或唯一组合索引

对订单的幂等性设计,可以使用订单号作为唯一索引,这样如果多次插入的话,就会报错 DuplicatedKeyException, 那么我们就可以捕获该错误,来返回友好提示。

方案二:基于 Redis setnx

使用 Redis 的 setnx 来进行实现幂等性,setnx 如果设置成功,表示第一次来请求,如果设置失败表示重复请求,setnx 设置时也记得设置过期时间

方案三:Token + Redis

针对调用方重试接口的情况,例如重复提交订单,这种幂等性设计可以使用 Token 机制来防止重复提交。

调用方在调用接口时,先向后端请求一个 Token,该 Token 存储在 Redis 中并设置过期时间,在调用时携带上 Token(放入Header存储),后端在 Redis 中检查该 Token 是否存在,如果存在表示是第一次请求,删除token中的缓存**(使用 lua 脚本,保证操作的原子性)**,如果不存在,表示重复请求,直接返回。

如果第一次调用接口失败了,可以通过设计来重新生成 token,再次尝试调用。

public void invoke(){String token = genToken();// 提交订单信息submitOrder(token, order);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/184750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【正点原子STM32连载】第六十三章 FreeRTOS移植实验摘自【正点原子】APM32F407最小系统板使用指南

1)实验平台:正点原子APM32F407最小系统板 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html## 第六十…

KT1404C语音芯片为什么用着用着,声音就变大了,发指令设置音量?

一、问题简介 有客户反馈,使用KT404C语音芯片,每次主板上电的时候,都会发指令将音量设置为20级,但是实际到使用现场,就会有终端的客人反馈,机器的音量变大了,这个是什么情况呢,该如…

java:IDEA中Maven常用操作

文章目录 背景1、Reload All Maven Projects:2、Generate Sources and Update Folders For All Projects:3、Download Sources and/or Documentation:4、Add Maven Projects5、Run Maven Build6、Execute Maven Goal7、Toggle Offline Mode8、Toggle Skip Tests Mode9、Collaps…

网络通信概述

文章目录 IP地址端口号协议三要素作用 五元组协议分层OSI七层模型TCP/IP 五层模型应用层传输层网络层数据链路层物理层 封装和分用发送方 - 封装中间转发接收方 - 分用 一般认为计算机网络就是利用通信线路和通信设备将地理上分散的、具有独立功能的多个计算机系统按不同的形式…

修复 Apache Kafka 中的远程代码执行漏洞CVE-2023-25194

文章目录 前言一、Log4Shell connection二、DisclosureUpdates, mitigations 前言 Possible RCE and denial-of-service issue discovered in Kafka Connect 在 Kafka Connect 中发现可能的 RCE 和拒绝服务问题。 更新 阿帕奇软件基金会 (ASF) 已解决了一个漏洞,…

【深度学习实验】图像处理(三):PIL——自定义图像数据增强操作(随机遮挡、擦除、线性混合)

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 导入必要的库1. PIL基础操作2. Cutout(遮挡)2.1 原理2.2 实现2.3 效果展示 3. Random Erasing(随机擦除)3.1 原理3.2 实现3.3 效果展示 4. Mixup&…

健身房服务预约会员管理系统小程序效果怎样

健身房是很多人锻炼的主要场所之一,各地城区都有大量品牌,主要以同城客户为主,具备较强的客户管理和门店运营属性 ,面对当今互联网环境,需要商家进一步管理赋能。 那么通过【雨科】平台搭建健身房管理系统能帮助商家实…

【raect.js + hooks】useRef 搭配 Houdini 创造 useRipple

水波纹点击特效 really cool,实现水波纹的方案也有很多,笔者经常使用 material 组件,非常喜欢 mui 中的 ripple,他家的 ripple 特效就是通过 css Houdini 实现的。 今天,我们将复刻一个 ripple,并封装成 ho…

Spring中@DependsOn 使用详解

一、注解源码 Target({ElementType.TYPE, ElementType.METHOD}) Retention(RetentionPolicy.RUNTIME) Documented public interface DependsOn {String[] value() default {}; } 二、基础概念 DependsOn是Spring框架用来指定bean之间依赖关系的注解之一,即可用户类…

淘宝商品详情数据接口(店铺搬家、数据分析、代购商城、ERP选品、无货源铺货、品牌监控)

使用淘宝API接口需要以下步骤: 注册开发者账号:在淘宝开放平台(https://o0b.cn/anzexi)上注册一个开发者账号,并创建一个应用。 获取API密钥:在应用页面上获取API密钥,这是后续调用API接口的凭…

Mendix组件推荐:灵活的在线表格

- 视频 mendix在线表格.mp4 20.95MB - 客户需求 如果你是一个中小型企业的负责人,你可能面临着: 多人协作录入数据展示数据库中的数据对数据安全有要求、希望本地离线部署并且IT人员配置有限等挑战 为了更好地管理你的业务数据,你需要一个…

如何防止网络被入侵?

随着互联网的普及,网络安全问题越来越受到人们的关注。其中,如何防止网络被入侵是一个重要的问题。本文将介绍一些防止网络被入侵的方法,帮助大家保护自己的网络安全。 一、使用强密码 强密码是防止网络被入侵的第一道防线。一个好的密码应该…

【brpc学习实践十二】bthread

概览 bthread(代码)是baidu-rpc使用的M:N线程库,是其稳定和高效的关键组件。能更好地利用多核cpu,能在pthread中运行,需要注意的是,bthread的work stealing机制会da让任务pthread发生切换,从而让thread_local变量不可信,通常在bthread_usleep或这join的时候就有可能发生…

Agent举例与应用

什么是Agent OpenAI 应用研究主管 Lilian Weng 在一篇长文中提出了 Agent LLM(大型语言模型)记忆规划技能工具使用这一概念,并详细解释了Agent的每个模块的功能。她对Agent未来的应用前景充满信心,但也表明到挑战无处不在。 现…

Linux RN6752 驱动编写

一、概述 关于 RN6752V1 这个芯片这里就不做介绍了,看到这篇笔记的小伙伴应该都明白,虽然说 RN6752V1 芯片是 AHD 信号的解码芯片,但是也可以把芯片当做是一个 YUV 信号的 MIPI 摄像头,所以驱动的编写和 MIPI 摄像头无太大的区别。…

虚拟机虚拟化原理

目录 什么是虚拟化广义虚拟化狭义虚拟化 虚拟化指令集敏感指令集虚拟化指令集的工作模式监视器对敏感指令的处理过程: 虚拟化类型全虚拟化类虚拟化硬件辅助虚拟化 虚拟化架构裸金属架构宿主机模式架构 什么是虚拟化 虚拟化就是通过模仿下层原有的功能模块创造接口来…

软件著作权申请都应该提供哪些材料?

作为一个苦逼的程序员,一直致力于搬砖式的增删改查,偶尔突然有了一个小小的创意,然而却无法用法律的武器保护自己。 想申请著作权又不知道该如何实现,那么,我就把当年自己申请著作权需要的材料列一下,希望广…

中国版的 GPTs:InsCode AI 生成应用

前言 在上一篇文章 《InsCode:这可能是下一代应用开发平台?》中,我们介绍了一个新的应用开发平台 InsCode,它是基于云原生开发环境 云 IDE AI 辅助编程的一站式在线开发平台。 最近,InsCode 又推出了另一种全新的开…

OpenCV项目开发实战-通过轮廓检测最小化图像眩光

该过程涉及使用两个输入;输入 1 是参考图像,而输入 2 是要扭曲/对齐的图像。匹配图像后,图像 2 通过透视与图像 1 对齐。下一步是通过阈值处理获得二值图像,然后根据轮廓的面积对其进行排序。最后对二值图像进行清洗后得到绝对差图像。 目录 轮廓检测:减少图像 opencv上的…

Python三十个常见的脚本汇总

1、冒泡排序 2、计算x的n次方的方法 3、计算a*a b*b c*c …… 4、计算阶乘 n! 5、列出当前目录下的所有文件和目录名 6、把一个list中所有的字符串变成小写: 7、输出某个路径下的所有文件和文件夹的路径 8、输出某个路径及其子目录下的所有文件路径 9、输出某个路…