长业务事务的离线并发问题

news2024/11/15 8:34:25

事务指代一组操作同时成功或同时失败,事务可分为两类:

  • 系统事务:即关系数据库事务,一次数据库连接中由start transactionbegin开启,commit表示提交,rollback表示回滚;
  • 业务事务:完成一个业务目标包含的一系列业务动作,如让一个配置生效,需要经历 编辑->保存->提交审批->审批通过 这4个步骤。

当事务持续时间过长,并发请求的概率就会越大,会导致一系列并发问题,如:脏读,不可重复读,更新丢失甚至死锁等问题。

解决大系统事务的方式通常是两个思路:减少事务持续时间 和 缩小事务锁定资源的范围,比如仅在写库时开启事务,前置的查询判断逻辑不在事务中进行,以此来避免并发更新,同时写库时可使用乐观锁(如:版本号)进行兜底判断,以此来检测并发更新。

而业务事务的持续时间和资源通常由业务流程所决定,并不能在这两个方面优化来避免离线并发问题, 但可以通过乐观锁机制检测并发更新。

考虑如下场景:运营人员发布一个商品需要经过 商品配置编辑 -> 商品配置保存 -> 商品配置审批 -> 商品发布 4步,

商品配置状态机如下:
在这里插入图片描述

如果不做任何离线并发控制,会存在业务保存的配置和实际提交的配置存在不一致,考虑以下情况:

在这里插入图片描述

张三预期提交审批的配置和实际提交的配置不一致。这里需要一个版本号关联保存的配置和发起审批的配置,通常在保存时,后台返回保存的版本,后面提交审批时携带保存的版本,后台进行版本比对,如果版本不一致,则表示配置已被更新,需终止发起审批:

在这里插入图片描述

这种丢失更新的场景通常是由于操作非原子导致,从保存到发起审批之间的时间间隔无法预知,不同业务人员在一段时间内同时编辑容易
触发离线并发问题。

这里使用乐观锁机制在最终提交步骤里检测是否被并发更新,为什么不使用悲观锁?其一,业务流程上不允许一个业务人员的一次操作独占该配置的写,其二,悲观锁锁定时间较长,耗费资源多,且容易引发死锁问题。

那么乐观锁有什么缺点呢?业务只有在最终提交时才会感知到此次修改保存是否有效,我辛辛苦苦编辑了10分钟,最后提交你和我说被别人改了提交不了,业务很"生气"。当然也可以在业务编辑时定时检测是否有新版本提交,提早主动发现而非最后被动告知,交互性上相对更人性化,现在的各种网站也都有主动检测变更机制,例如,B站在看评论时如果有新评论会自动插入到评论区中,不需要用户重新刷新。

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

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

相关文章

海外VS国内:网安上市公司人均创收对比

二级市场分析章节中分析了中国网络网络安全上市公司人均创收63.2万、人均毛利37.6万,人均创利-1.6万。 有网友问了:海外网络安全公司的人均情况如何?那么让我们一起看看吧。 我们统计了在海外上市的28家主要网络安全公司的2023年的人均情况&…

Python互相关统计学 地震学 心理学 数学物理和算法模型及数据科学应用

🎯要点 同步时间序列数据地震时频域信息绘制地震噪声干涉图和频谱计算光变曲线和时滞互相关光变曲线并计算峰值和质心图像几何对应关系算法气候相关矩阵图测量麦克风间距离图像相似性量化及显着性统计测试个体同步性量化分析计算绘制有无泊松噪声的光曲线地震幅度和…

通信工程学习:什么是接入网(AN)中的CF核心功能

接入网(AN)中的CF核心功能 在通信工程中,CF(Core Function)通常指的是核心功能,它是接入网(AN)中的一个重要组成部分。CF的主要作用是将用户或业务端口的承载要求与公共传送承载进行…

一键生成中秋国风插画!FLUX中秋专属Lora的使用教程

如何在中秋节期间快速生成富有节日气氛的国风插画吗? 不需要复杂的设计技能,或者手绘功底。只需借助FLUX中秋专属Lora-中秋国风人物插画v1.0_FLUX, 就可以轻松实现一键生成精美插画,特别适合用于宣传海报、包装设计等场景。 这个…

6.接口测试加密接口(Jmeter/工具/函数助手对话框、Beanshell脚本)

一、接口测试加密接口,签名接口 1.加密算法: 可以解密的: 对称式加密(私钥加密):AES,DES,Base64 https://www.bejson.com 非对称加密(双…

编写程序模版的搭建

1 完整的程序工程有些部分组成 1.1 头文件介绍 头文件嵌套包括的功能 CCS如何找到需要的头文件 1.2 源文件 1.3 库文件 1.4 CMD文件 2 工程模板创建 2.1 获取工程模板基础文件 <

CleanMyMac X 4.15.6正式版 mac直装破解版

你知道 CleanMyMac是什么吗&#xff1f;它的字面意思为“清理我的Mac”&#xff0c;作为软件&#xff0c;那就是一款 Mac清理工具 &#xff0c;Mac OS X 系统下知名系统清理软件&#xff0c;是数以万计的Mac用户的选择。它可以流畅地与系统性能相结合&#xff0c;只需…

dubbo一

Dubbo 分布式系统的演进 SOA面向服务架构 NSA微服务架构 节点与网络 分片和冗余 分布式系统挑战 分布式系统特性与衡量标准 一致性理论 强一致性ACID CAP 弱一致性BASE 一致性算法 dubbo dubbo六大核心功能 API与SPI

【第36章】Spring Cloud之Seata分布式事务

文章目录 前言一、架构图1. 介绍2. 项目结构3. 功能描述 二、用例1. 准备1.1 系统表1.2 业务表1.3 初始化数据 2. 项目搭建2.1 项目结构2.2 主要依赖2.3 主要配置 三、主要业务代码1. 仓储服务1.1 controller1.2 service1.3 dao 2. 订单服务1.1 controller1.2 service1.3 dao 3…

对操作系统(OS)管理和进程的理解

文章目录 从冯诺依曼体系入手来了解计算机硬件部分操作系统操作系统的概念设计操作系统&#xff08;OS&#xff09;的目的对下&#xff08;硬件&#xff09;OS的管理对上如何理解系统调用 进程 在计算机系统中&#xff0c;硬件、操作系统和进程是三个至关重要的概念。它们相互协…

【数据库】MySQL内置函数

本篇分享一些在MySQL中常见的一些内置函数&#xff0c;如日期函数&#xff0c;字符串函数和数学函数&#xff0c;以方便于操作数据库中的数据。 1.日期函数 我们先整体观察一下这些函数再讲解案例 日期函数使用起来都非常就简单 获得年月日&#xff1a; select current_dat…

LocalMamba: Visual State Space Model with Windowed Selective Scan 论文总结

题目&#xff1a;LocalMamba: Visual State Space Model&#xff08;视觉状态空间模型&#xff09; with Windowed Selective Scan&#xff08;窗口化的选择扫描&#xff09; 论文&#xff1a;[2403.09338] LocalMamba: Visual State Space Model with Windowed Selective Scan…

opencv彩色图像转灰度图原理

opencv彩色图像转灰度图原理 在OpenCV中&#xff0c;将彩色图像转换为灰度图像的基本原理是使用颜色空间转换的方法。具体来说&#xff0c;OpenCV提供了cvtColor函数&#xff0c;它可以将图像从一个颜色空间转换到另一个。 对于从BGR颜色空间&#xff08;OpenCV中的默认彩色图…

少儿编程Scratch中秋节动画贺卡免费下载,让孩子轻松学编程

Scratch节日动画 – 中秋节动画贺卡免费下载-小虎鲸Scratch资源站 中秋佳节将至&#xff0c;如何让孩子在节日中既能感受到传统文化的魅力&#xff0c;又能学到编程知识&#xff1f;小虎鲸Scratch资源站特别推出了中秋节动画贺卡&#xff0c;不仅能让孩子通过简单的编程技巧制作…

【AI大模型】OpenAI API实现翻译助手场景

一、OpenAI简介 OpenAI,美国人工智能研究公司&#xff0c;是一家开放人工智能研究和部署公司&#xff0c;其使命是确保通用人工智能造福全人类 。创立于2015年12月&#xff0c;总部位于美国旧金山。现由营利性公司OpenAI LP及非营利性母公司OpenAI Inc组成。 随着2018年埃隆马…

24年云南省下半年事业单位少有人知的10个真相

云南下半年事业单位&#xff0c;已经确定了9月19号报名&#xff0c;11月2日笔试&#xff0c;关于下半年事业单位联考的一些考情&#xff0c;一次看懂: . 1⃣️专科生的岗位很多 根据过往三年的情况来看&#xff0c;云南下半年的事业单位考试&#xff0c;其实专科生有不少的岗位…

java项目之在线考试与学习交流网页平台源码(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于JAVA语言…

基于Springboot的校园防疫管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1&#xff0e;本毕业设计&#xff08;论文&#xff09;课题应达到的目的&#xff1a; 1.1选题意义&#xff1a; 高校作为一种人群高度密集、人口来源地组成复杂的公共场所&#xff0c;一旦发生因传染病疫情导致的公共卫生安全事…

wpf触发与模板的使用示例:批量生产工具

批量生产工具 <Window x:Class"WpfM20UpdateFW.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/expressio…

java项目之基于工程教育认证的计算机课程管理平台(源码+论文)

项目简介 基于工程教育认证的计算机课程管理平台的主要管理员可以管理教师&#xff0c;可以对教师信息修改删除以及查询操作&#xff1b;可以对通知公告信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作&#xff1b;可以对学生信息进行添加&#xff0c;修改&#xf…