当前位置: 首页 > news >正文

高并发下如何保证接口幂等

文章目录

  • 1. insert前先select
  • 2. 加悲观锁
  • 3. 加乐观锁
  • 4. 加唯一索引
  • 5. 建防重表
  • 6. 根据状态机
  • 7. 加分布式锁
  • 8. 获取token

接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考。

不知道你有没有遇到过这些场景:

  1. 有时我们在填写某些form表单时,保存按钮不小心快速点了两次,表中竟然产生了两条重复的数据,只是id不一样。
  2. 我们在项目中为了解决接口超时问题,通常会引入了重试机制。第一次请求接口超时了,请求方没能及时获取返回结果(此时有可能已经成功了),为了避免返回错误的结果(这种情况不可能直接返回失败吧?),于是会对该请求重试几次,这样也会产生重复的数据。
  3. mq消费者在读取消息时,有时候会读取到重复消息(至于什么原因这里先不说,有兴趣的小伙伴,可以找我私聊),如果处理不好,也会产生重复的数据。

没错,这些都是幂等性问题。

相关文章:

高并发下如何保证接口幂等

文章目录 1. insert前先select2. 加悲观锁3. 加乐观锁4. 加唯一索引5. 建防重表6. 根据状态机7. 加分布式锁8. 获取token接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题。本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要…...

Retrofit源码分析小结

Retrofit源码分析&小结 简介 Retrofit是对Okhttp网络请求的二次封装,通过注解动态代理的方式,简化了Okhttp的使用,使得通过简单的配置就可以像调用接口一样去请求网络接口;除此之外Retrofit还支持RxJava和kotlin的协程 基本…...

【从零开始学习 UVM】11.4、UVM Register Layer —— UVM Register Model 实战项目(RAL实战,交通灯为例)

文章目录 DesignInterfaceRegister Model ExampleRegister EnvironmentAPB Agent ExampleTestbench EnvironmentSequencesTest在之前的几篇文章中,我们已经了解了寄存器模型是什么以及如何使用它来访问给定设计中的寄存器。现在让我们看一个完整的例子,展示如何为给定设计编写…...

session和token的登录机制

做登录的时候遇到了token ,web和smtp的登录情况,这里 记录一下我所学习的两种登录方式,一种是token ,一种是session session 登录机制 当用户请求登录接口进行登录服务端 获得登录的信息,从而在数据库中查到相应的用…...

大厂研发成本大曝光,研发占大头

近日,腾讯发布《2022 年腾讯研发大数据报告》,披露了 2022 年腾讯在研发投入、研发效能、开源协同等方面的重要数据。 《报告》显示,2022 年腾讯内部研发人员占比达到 74%,这意味着,平均每四个腾讯员工中,…...

python爬虫第一节基础概念

爬虫是一种自动化抓取互联网上数据的技术。在网络信息爆炸的今天,爬虫技术已经成为数据获取和信息分析的重要手段。本文将详细介绍爬虫的基础知识和操作,帮助初学者快速入门。 一、爬虫的基本原理 爬虫的基本原理是通过网络请求获取网页源代码&#xf…...

web学习---Vue---笔记(1)

该笔记是记录尚硅谷的Vue学习视频的笔记,视频地址为:学习视频地址 初始Vue Vue组件化的特点 组件化声明式编码虚拟DOMDiff算法,尽量复用DOM节点 H5的组件,是把某一个模块封装,里面写HTML\CSS\JS等,算是一…...

【前端面试题——微信小程序】

目录1.请谈谈wxml与标准的html的异同?2.请谈谈WXSS和CSS的异同?3.请谈谈微信小程序主要目录和文件的作用?4.请谈谈小程序的双向绑定和vue的异同?5.简单描述下微信小程序的相关文件类型?6.微信小程序有哪些传值(传递数据…...

gpt模型训练-gpt3模型详解

训练一个GPT模型需要大量的数据集和计算资源。在这里,我提供一些较为通用的训练步骤以供参考: 获取数据集 首先需要收集一些数据集,数据集建议获取大型的常用文本数据集。常见的例如维基百科、各种在线文章、小说、论文等,数据集…...

vue尚品汇商城项目-day04【27.分页器静态组件(难点)】

文章目录27.分页器静态组件(难点)本人其他相关文章链接27.分页器静态组件(难点) 难点: 考虑点1:为啥需要分页呢? 答案:按需加载 考虑点2:分页器展示,需要哪…...

使用SeaFile搭建私有云盘并公网访问【cpolar内网穿透】

文章目录1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置3. cpolar内网穿透3.1 Cpolar下载安装3.2 Cpolar的注册3.3 Cpolar云端设置3.4 Cpolar本地设置4. 公网访问测试5. 结语1. 前言 现在我们身边的只能设备越来越多,各…...

蓝桥杯第26天(Python)考前挣扎

题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...

WuThreat身份安全云-TVD每日漏洞情报-2023-04-04

漏洞名称:RSA NetWitness Platform 内存损坏漏洞 漏洞级别:中危 漏洞编号:CVE-2022-47529,CNNVD-202303-2419 相关涉及:RSA NetWitness Platform 12.2之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07193 漏洞名称:EyouCms <1.5.…...

【C++】Step by Step的格式化代码风格是这样的吗?

文章目录前言一、依赖二、配置总结前言 本节从0开始讲解如何格式化自己的代码风格&#xff0c;使用vscode插件来完成&#xff0c;本节的所有配置都会在星球同步哦~ 一、依赖 本次使用的是clang-format插件&#xff0c;具体安装比较简单&#xff1a; mac系统&#xff1a; br…...

aspnet030高校学生团体管理系统sqlserver

net030高校学生团体管理系统 . 1.用户基本信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 2.学生成绩管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 3.学生团体信息管理模块&#xff1a;录入、修改、删除、查询、统计、打印等功能 4.教…...

学习HM微博项目第10天

步骤&#xff1a;发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最近表情 -> 发微博16-表情键盘10-最近表情完善 发微博12-表情键盘06-点击表情 APP的演示动画&#xff…...

0204强连通性-有向图-数据结构和算法(Java)

文章目录1 概述2 强连通分量2.1 定义2.2 Kosaraju算法2.2.1 算法实现2.2.2算法测试2.2.3 算法理解3 强连通性结语1 概述 定义。如果2个顶点是相互可达的&#xff0c;则称它们为强连通的。如果一幅有向图中的任意两个顶点都是强连通的&#xff0c;则称这幅有向图也是强连通的。 …...

ElasticSearch集群

5.2 IK分词器简介 IKAnalyzer是一个开源的&#xff0c;基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始&#xff0c;IKAnalyzer已经推出 了3个大版本。最初&#xff0c;它是以开源项目Lucene为应用主体的&#xff0c;结合词典分词和文法分析算法的中文分…...

音视频基础概念(6)——视频基础

网上冲浪时&#xff0c;我们会接触到网络流媒体和本地视频文件。常见的视频文件格式有MP4、MKV、AVI等。在流媒体网站上看见视频常用的协议有HTTP、RTSP、RTMP、HLS等。视频技术较为复杂&#xff0c;包括视频封装、视频编解码、视频播放和视频转码等内容。1 视频基础概念当下市…...

【Python网络蜘蛛】基础 - 多线程和多进程的基本原理

文章目录多线程和多进程的基本原理多线程的含义并发和并行Python中的多线程和多进程多线程和多进程的基本原理 在编写爬虫程序的时候&#xff0c;为了提高爬取效率&#xff0c;我们可能会同时运行多个爬虫任务&#xff0c;其中同样涉及多进程和多线程。 多线程的含义 先了解一…...

企业级消息通道架构实战:深度解析高性能钉钉机器人集成方案

企业级消息通道架构实战&#xff1a;深度解析高性能钉钉机器人集成方案 【免费下载链接】openclaw-channel-dingtalk A dingtalk bot channel plugin for clawdbot 项目地址: https://gitcode.com/gh_mirrors/op/openclaw-channel-dingtalk OpenClaw-Channel-DingTalk是…...

告别手动配置!CCSv9.3一键导入MSP430F5529LP驱动库的两种高效方法

CCSv9.3高效配置指南&#xff1a;MSP430F5529LP驱动库的自动化管理方案 每次新建CCS工程都要重复添加库文件路径&#xff1f;这种低效操作早该被淘汰了。作为TI官方推荐的开发环境&#xff0c;Code Composer Studio其实隐藏着许多能大幅提升工作效率的高级功能。本文将彻底改变…...

鸽姆智库(GG3M Think Tank)核心优势 |Core Strengths of GG3M Think Tank

鸽姆智库&#xff08;GG3M Think Tank&#xff09;核心优势鸽姆智库&#xff08;GG3M Think Tank&#xff09;的核心优势体现在理论原创性、技术架构创新、东方智慧深度融入与全场景工程落地能力四大维度&#xff0c;构成全球首个以东方哲学为根基的“文明级操作系统”&#xf…...

G-Helper:华硕ROG笔记本性能调校的轻量级解决方案

G-Helper&#xff1a;华硕ROG笔记本性能调校的轻量级解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地址: h…...

霍尔电流传感器原理与应用全解析

霍尔电流传感器测量原理深度解析 1. 霍尔效应电流测量基础 1.1 霍尔效应原理 霍尔效应是电流测量的基础物理现象&#xff0c;当导体或半导体薄片置于磁场中&#xff0c;并在其两端施加控制电流时&#xff0c;垂直于电流和磁场方向的两侧会产生电势差&#xff0c;这种现象称为…...

AI原生前端:基于OpenTiny NEXT生态的全链路学习、实战、开源实践与行业前瞻

过去二十年&#xff0c;前端行业经历了四次决定性的进化浪潮&#xff1a;第一次是Web1.0时代&#xff0c;jQuery等工具库终结了原生JS的兼容乱象&#xff0c;让前端从静态页面的拼接者&#xff0c;变成了动态交互的实现者&#xff1b;第二次是三大框架的崛起&#xff0c;Vue、R…...

轻量NAS整合:OpenClaw+nanobot自动同步群晖文件的配置方法

轻量NAS整合&#xff1a;OpenClawnanobot自动同步群晖文件的配置方法 1. 为什么需要自动化文件管理 作为一个长期使用群晖NAS的用户&#xff0c;我经常遇到这样的困扰&#xff1a;下载文件夹里堆满了各种文件&#xff0c;手动分类整理耗时耗力&#xff1b;重要文档的版本管理…...

安装claude code,开始学习强大的AI编程助手

1.首先检查是否安装node.js&#xff08;版本尽量大于22&#xff09; window端输入winr -> cmd 打开终端查看node版本 可以使用nvm去管理nodejs版本&#xff0c;安装方式见 https://blog.csdn.net/m0_56820004/article/details/159585001?spm1011.2415.3001.10575…...

Vue2集成腾讯地图:动态标点与跨域请求实战

1. Vue2项目集成腾讯地图的前期准备 第一次在Vue2项目中使用腾讯地图时&#xff0c;我踩了不少坑。最头疼的就是跨域问题——浏览器出于安全考虑&#xff0c;默认禁止前端直接请求不同源的资源。而腾讯地图的API接口正好属于这种情况。经过多次尝试&#xff0c;我发现vue-jsonp…...

数字电路设计小技巧:从HDLBits例题看SOP与POS的Verilog实现

数字电路设计实战&#xff1a;从真值表到Verilog的SOP与POS高效实现 在数字电路设计中&#xff0c;掌握逻辑表达式的最简化方法是一项基础但至关重要的技能。今天我们就以HDLBits平台上的经典例题ECE241 2013 Q2为例&#xff0c;手把手教你如何从真值表出发&#xff0c;通过卡…...