高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

2023-11-04

幂等概念来自于数学,在计算机科学中,幂等表示一次后、或多次请求某一资源,应该有同样的影响效果。
在业务表现上一般是同样的数据效果,下面就常用的业务场景,来聊聊幂等的技术方案。

----------------- 数据层 -----------------

  1. 索引与事务
    根据业务需要,给表添加唯一索性或组合索引,防止产生脏数据。
    根据数据库隔离级别,比如可重复读,在操作多表数据时,使用事务,要求数据要么全部操作成功,要么全部失败。
  2. 悲观锁
    根据实际情况使用,查询指定数据时指定用于更新,注意根据主键或唯一索引查询。数据锁定时间可能会很长,会造成读取该数据的等待时间长。
  3. 乐观锁
    乐观锁只在更新数据的那一刻锁表,适用于并发冲突不是很高的场景,可配合业务重试机制。
    乐观锁的实现方式,一般通过版本号或时间戳来实现,其他条件也可。
    之前的文章『MySQL锁与应用场景』,有说乐观锁与悲观锁的SQL示范。

----------------- 业务层 -----------------

  1. 对外提供的接口
    对接外部系统时,使用来源、业务流水号等,作为联合唯一索引,或者生成分布式唯一ID,记录在数据库。
    来请求时,查询数据库流水号已存在,并处理成功,就是重复请求,直接返回。如果数据不存在,记录流水号,开始处理,插入数据成功,接着返回成功。
  2. 先查询再插入
    对于并发不高的业务,为了支持重复执行,简单的处理方式是,查询关键数据来判断&
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型 的相关文章

  • 浅谈tidb事务与MySQL事务之间的区别

    MySQL是我们日常生活中常见的数据库 他的innodb存储引擎尤为常见 在事务方面使用的是扁平事务 即要么都执行 要么都回滚 而tidb数据库则使用的是分布式事务 两者都能保证数据的高一致性 但是在实现方式上是不一样的 我们先来看看MyS
  • 电子企业MES管理系统架构分析

    随着电子制造行业的快速发展 MES生产管理系统的应用越来越普遍 许多制造企业购买或自主研发了适合自己工厂的MES 旨在实现智能工厂 车间 的目标 作为智能制造的核心 MES管理系统解决方案在企业智能化转型升级中发挥着越来越重要的作用 然而
  • Redis单机版全面讲解

    目录 常识 什么是redis redis为什么快 redis作为实例安装在系统中 redis数据类型 redis命令 String类型相关命令 list类型相关命令 hash类型相关命令 set类型相关命令 zset类型相关命令 redis
  • java高并发的处理--锁机制

    对于我们开发的网站 如果网站的访问量非常大的话 那么我们就需要考虑相关的并发访问问题了 而并发问题是绝大部分的程序员头疼的问题 但话又说回来了 既然逃避不掉 那我们就坦然面对吧 今天就让我们一起来研究一下常见的并发和同步吧 为了更好的理解并
  • 死锁算法:银行家算法和安全性算法

    死锁算法 银行家算法和安全性算法 借鉴了一些文章 自己总结了一下 银行家算法 首先 算法的核心在于 每次进程申请资源时 都会进行一次试探性分配 若成功 则真实分配 基本思想 在每个新进程进入系统时 他必须声明在运行过程中 可能需要的每种资源
  • 十、软考2013年下半年软件设计师易错题整理

    十 软考2013年下半年软件设计师易错题整理 文章目录 十 软考2013年下半年软件设计师易错题整理 错题1 错题2 错题3 错题4 错题5 错题6 错题7 错题8 错题9 错题10 错题11 错题12 错题13 错题14 错题15 错题1
  • 基础项目(2)二选一数据选择器的设计

    写在前面的话 数据选择器在数字电路设计中的应用尤为广泛 同时 作为基础的电路功能单元 也比较适合作为初学者的入门实验 现在梦翼师兄陪大家一起来设计一个最基础的数据选择器 项目需求 设计一个二选一数据选择器 然后用一路控制信号选择输出数据选通
  • 在Jenkins管道中添加Webhook

    你有没有尝试过在Jenkins中添加GitHub webhook 在这篇博客中 我将演示在您的管道中添加webhook的最简单方法 首先 什么是webhook webhook的概念很简单 webhook是一个HTTP回调 当通过HTTP P
  • 经销商订单系统,搭建中的功能介绍(感想)

    一 关于需求方对订货系统的解释 经销商订单系统 也可以叫做企业订货软件 企业订单软件 这是需求商说的 这套系统甲方说是属于企业内部系统 并不属于商城范畴 属于是企业内部单机的订单管理系统演变而来 二 经销商订单系统的流程 2 1 第一步 通
  • MES管理系统在电子行业的作用和效益

    电子行业近年来发展很好 特别是MES管理系统对于生产的帮助 电子行业MES管理系统促进了行业的数字化转型 从而提高电子行业高效管理 使企业效益最大化 电子行业现状 1 产品 顶级企业只负责设计与销售 对于涉及制造的各级企业产品较多 并且产品
  • 系统架构设计师(第二版)学习笔记----信息系统基础

    原文链接 系统架构设计师 第二版 学习笔记 信息系统基础 文章目录 一 信息系统概述 1 1 信息系统的5个基本功能 1 2 信息系统发展阶段 1 3 初始阶段的主要特点 1 4 传播阶段的主要特点 1 5 控制阶段的主要特点 1 6 集成
  • 半虚拟化和全虚拟化的区别

    全虚拟化 Full virtualization 也称为原始虚拟化技术 是另一种虚拟化方法 该模型使用虚拟机协调客户 操作系统和原始硬件 见图2 这里 协调 是一个关键词 因为VMM在客户操作系统和裸硬件之间用于工作协调 一些受保护的指令必
  • 高并发,你真的理解透彻了吗

    高并发 几乎是每个程序员都想拥有的经验 原因很简单 随着流量变大 会遇到各种各样的技术问题 比如接口响应超时 CPU load升高 GC频繁 死锁 大数据量存储等等 这些问题能推动我们在技术深度上不断精进 在过往的面试中 如果候选人做过高并
  • 系统架构主题之七:基于架构的软件设计方法及应用

    1 基于架构的软件设计方法概念 关键词 ABSD 自顶向下 递归迭代 与需求同步 设计元素 视角与视图 用例和质量场景 预期和非预期等 总的来讲 ABSD方法分为如下六个大的阶段 1 体系结构需求阶段 相比传统软件系统设计 架构设计在需求获
  • 量化交易框架开发实践(一)

    量化交易平台指支持通过对数据进行多维度的定量分析 结合发现的特征定制策略 并能够基于历史数据对策略进行回测 最后支持实盘买卖的交易平台 从业务流上看 量化交易可以分解成 行情获取 gt 数据清洗 gt 指标计算 gt 策略开发 gt 策略回
  • 初级PHP工程师对于进阶的思考

    突然想写篇博客记录下刚毕业这段时间的经历 主要是对于人生的下一阶段的思考和诸多事物触起的思考 一 人生的下一阶段 人生的意义从来不是为自己奋斗 生活的意义也从来不是奋斗 今年毕业 距离博文发表的现在约莫有2个月 毕业前的我是一个极度执着追求
  • Spring框架的前世今生与系统架构

    课题 Spring框架的前世今生及系统概述 课程目标 1 通过对本章内容的学习 可以掌握Spring的基本架构及各子模块之间的依赖关系 2 了解Spirng的发展历史 启发思维 3 对Spring形成一个整体的认识 为之后的深入学习做铺垫
  • 大型网站架构不得不考虑的10个问题

    这里的大型网站架构只包括高互动性高交互性的数据型大型网站 基于大家众所周知的原因 我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了 我们以高负载高数据交换高数据流动性的网站为例 比如海内 开心网等类似的web2 0系列架构 我们这
  • 如果老板要求你的系统接入春晚大流量活动,你会心慌慌吗?

    目录 回头看看 原始系统技术架构 基于CDN的活动静态页面缓存方案 基于Nginx Tomcat Redis的多级缓存方案 超高并发写请求RocketMQ削峰填谷方案 系统限流防雪崩体系架构方案 今天给大家分享一个话题 就是如果要是你老板突
  • 《系统架构设计师教程(第2版)》第2章-计算机系统基础知识-07-系统性能

    文章目录 1 性能指标 1 1 计算机的性能指标 1 2 路由器的性能指标 了解即可 1 3 交换机的性能指标 了解即可 1 4 网络的性能指标 1 5 操作系统的性能指标 1 6 数据库管理系统的性能指标

随机推荐

  • 复制微信公众号图片不能用,防盗链问题

    问题起因很简单 直接复制的公众号文章到网站 不单独处理图片 复制出来的文章图片因为微信防盗链设置不能显示出来 如下图 防盗链原理就是后端先拦截请求获取其中的referrer 将其和自身的白名单 本地域名等对比 符合条件的将通过 不符合的将会
  • Java:最小栈()

    一 知识准备 1 栈 核心 先进后出 从栈顶入 栈顶出 栈的几种基本操作 void push int data 入栈 int pop 弹出栈顶元素 即 删除并返回最后一个入栈的元素 int peek 返回栈顶元素但不删除 boolean e
  • 2021-03-30 python离线安装openpyxl模块

    1 前言 最近Python项目需要用openpyxl对excel进行处理 引用到了openpyxl模块 但是客户的环境没有网 无法用pip安装openpyxl 因此需要离线安装 记录下遇到的问题及解决的办法 2 过程 能联网的话用pip 一
  • WEB安全-RCE代码及命令执行漏洞

    WEB安全 RCE代码及命令执行漏洞 摘要 RCE概述 远程代码执行 eval 案例 远程命令执行 system shell exec 与 exec 案例 靶场案例 墨者靶场黑盒功能点命令执行 应用功能 墨者靶场白盒代码及命令执行 代码分析
  • make编译内核驱动模块

    make编译内核驱动模块 方法一 obj m hello world o KDIR home july7 prj Firefly RK3308 kernel 内核源码路径 PWD shell pwd 获取当前目录的变量 all make C
  • java 获取当前服务器CPU,JVM,内存等信息

    借助于 Hyperic Sigar 是一个收集系统各项底层信息的工具集 没啥技术含量 参考 https support hyperic com display SIGAR Home 下载地址 http sourceforge net pro
  • #ifndef 与 #pragma once 的使用方法

    ifndef 与 pragma once 都能让头文件只编译一次 避免重复编译 新版本的代码建议使用 pragma once 这样只要编译一次就可以了 但是很多老编译器不支持该语法 很尴尬 ifndef则需要每次使用的时候进行一次编译 速度
  • 概率论【离散型随机变量】--猴博士爱讲课

    第二课 离散型随机变量 1 6 求分布律里的未知数 2 6 根据X的分布律写Y的分布律 一维随机变量函数的分布 注意 3 6 根据 X Y 的分布律写Z的分布律 4 6 根据 X Y 的分布律写边缘分布律 边缘分布 5 6 X与Y相互独立时
  • python训练预测_python中NARX的示例-训练和预测 - python

    是否有使用Python中的NARX模型训练和预测 推断数据的端到端示例 有图书馆PyNeurgen NARX PyNeurgen library 但是PyNeurgen的文档不是很完整 该OP似乎已经编写了Keras实现 但是代码缺少用于推
  • CLion2021.2配置qt环境

    文章参考文档 使用CLion开发Qt Qt5 9 1 CLion2020 3 Clion中Cmake构建出现复制文件错误的解决办法 Clion 创建 Qt UI Class 踩坑 文章目录 1 前言 2 QT安装与环境变量的配置 3 工具链
  • Spring系列之@EnableAsync & @Async 实现方法异步调用

    1 本文内容 详解 EnableAsync Async 主要分下面几个点进行介绍 作用 用法 获取异步执行结果 自定义异步执行的线程池 自定义异常处理 线程隔离 源码 原理 2 作用 spring容器中实现bean方法的异步调用 比如有个l
  • 代码随想录算法训练营19期第44天

    完全背包 视频讲解 带你学透完全背包问题 和 01背包有什么差别 遍历顺序上有什么讲究 哔哩哔哩 bilibili https programmercarl com E8 83 8C E5 8C 85 E9 97 AE E9 A2 98 E
  • 数据工具sqoop用法之mysql与hive数据导入导出

    一 pom org apache hive hive jdbc 1 1 0 org apache hadoop hadoop common 2 6 0 org mybatis mybatis 3 4 6 mysql mysql connec
  • 别再无聊地显示隐藏了,Vue 中使用过渡动画让你的网页更有活力

    点击上方 前端Q 关注公众号 回复加群 加入前端Q技术交流群 Vue 是一款流行的前端框架 支持过渡动画的实现是其中的一项重要特性 在 Vue 中 使用过渡动画可以为用户提供更加友好的用户体验 下面我将为大家介绍一下子如何在 Vue 中实现
  • Python报错解决:local variable ‘xxx‘ referenced before assignment

    local variable xxx referenced before assignment 指的是 xxx 局部变量没有被声明 一般有如下两种情况 第一种是变量没有赋值 def test print a 这里a没有赋值 应该改成如下形式
  • 漂亮大气的企业文化宣传ppt模板

    和PPT打交道多年 从什么都不会的小白 到如今PPT制作小达人 关于有哪些好用的PPT模板资源 我还是很清楚的 学做ppt的时间成本确实是挺高的 因为这是一个需要长期磨练的技术活 故而 如若我们时间赶 任务重的话 可不必亲力亲为将自己磨练成
  • 如何使用Java操作TensorFlow

    简介 机器学习在全球范围内越来越受欢迎和使用 它已经彻底改变了某些应用程序的构建方式 并且可能会继续成为我们日常生活中一个巨大的 并且正在增加的 部分 没有什么包装且机器学习并不简单 它对许多人来说似乎非常复杂并常常令人生畏 像谷歌这样的公
  • Dubbo 与 Spring Cloud 完美结合

    概述 可能说起来Dubbo 很多人都不陌生 这毕竟是一款从2012年就开始开源的Java RPC框架 中间由于各种各样的原因停止更新4年半的时间 中间只发过一个小版本修了一个小bug 甚至大家都以为这个项目已经死掉了 竟然又在2017年9月
  • 【入门基础】写给小白看的入门级 Java 基本语法

    众所周知 Java 是一门面向对象的编程语言 它最牛逼的地方就在于它是跨平台的 你可以在 Windows 操作系统上编写 Java 源代码 然后在 Linux 操作系统上执行编译后的字节码 而无需对源代码做任何的修改 01 数据类型 Jav
  • 高并发系统 - 接口幂等技术方案,高可用系统架构与技术选型

    幂等概念来自于数学 在计算机科学中 幂等表示一次后 或多次请求某一资源 应该有同样的影响效果 在业务表现上一般是同样的数据效果 下面就常用的业务场景 来聊聊幂等的技术方案 数据层 索引与事务 根据业务需要 给表添加唯一索性或组合索引 防止产