分布式事务处理方案及分布式锁相关

本文偏理论

一、事务处理

1、事务处理的四个特性ACID

Atomicity 原子性:

对于数据库的修改,全部执行or全部不执行

Consistency 一致性:

Isolation 隔离性 :

亦称为串行化,防止事务间操作混淆,需要串行化或者序列化请求,使得在同一时间仅有一个请求用于同一数据

Durability 持久性:

分布式事务处理方案及分布式锁相关

2、本地事务处理

Spring注解@Transactional

使用@Transactional,使用aop(面向切面)的方式进行管理,可使用isolation配置事务隔离级别,我的理解是Spring基于单体服务模式的本地事务处理,并不是分布式的处理方式

3、分布式事务解决方案

应对场景:

一个事务有多个步骤组成,涉及跨服务(应用)或者跨数据库的事务场景,大致可分为三类场景:同服务跨库场景、跨服务场景、混合式场景
在这里插入图片描述

如客户下单,涉及订单服务、库存服务、支付服务、积分服务,任何一步失败,都涉及相关事务的处理

处理逻辑:

强一致性(设计复杂)、最终一致性(使用较多)

解决方案:

业务设计原则:允许空补偿 、幂等性、防悬挂

*空补偿:*Cancel执行时,Try未执行,事务分支的Cancel操作需要判断出Try未执行,这时需要忽略Cancel中的业务数据更新,直接返回

*悬挂:*Try执行时,Cancel已执行完成,事务分支的Try操作需要判断出Cancel一致性,这时需要忽略Try中的业务数据更新,直接返回

(1)TCC模式

补偿型事务(try confirm cancel)

在这里插入图片描述

(2)Saga模式

补偿型事务,但是它没有 try 阶段,而是把分布式事务看作一组本地事务构成的事务链
在这里插入图片描述

(3)基于消息的分布式事务

对业务侵入较低,最终一致性的解决方案

对消息中间件要求较高,且普通消息不能支持,需要中间件支持事务型消息(RocketMq)
在这里插入图片描述

或者通过维护 本地消息表来实现
在这里插入图片描述

二、分布式锁

应对场景:

集群模式下,一个方法或属性在高并发情况下的同一时间只能被同一个线程执行

实现方式:

1、基于数据库实现

2、基于redis实现

3、zookeeper



参考文档:
分布式事务解决方案
https://mp.weixin.qq.com/s/2AL3uJ5BG2X3Y2Vxg0XqnQ
分布式锁的三种实现方式
https://cloud.tencent.com/developer/article/1628536

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

隐私权限是什么

导读: 隐私权在现代社会对于人们而言是重要的人格权,而随着互联网技术的发展,实践中侵犯隐私权的行为很常见。那么隐私权限是什么?侵犯隐私权的行为有哪些?侵犯他人隐私权要负什么法律责任?接下来将由找法…

使用docker搭建RocketMQ(非集群搭建官方镜像)

之前在使用 RocketMQ 官方的包在搭建的时候,发现好多问题,什么修改内存大小,然后启动 broker 报错,类似 service not available now, maybe disk full 等等… 最后决定还是重新用 docker 搭建下,感觉这样子玩坏了&…

微信仿真平台的设计和实现(设计+源码)_kaic

摘要 现如今,科技的发展带动着环保方式的更新,Internet是一个不断的开展和不停的扩充数据潮流,有了它,我们可以快速、容易地在世界的任何角落进行沟通,获取更多的信息与资料。Internet可以提供大量信息资源和文案数据库…

全国各省份影像下载地址(11级别)

安徽省https://pan.baidu.com/s/1fMuWhVZFvSH1UlCGU1bPpA?pwdeasy澳门特别行政区https://pan.baidu.com/s/1aU2D4o2bfeHTJTb6AkUtVA?pwdeasy北京市https://pan.baidu.com/s/1eaNzAWm1pUx_rjhD_wHHhA?pwdeasy福建省百度网盘 请输入提取码甘肃省https://pan.baidu.com/s/1mAqf…

时序预测相关技术分享

时序预测相关技术分享 时序预测是指对时间序列数据进行预测,以预测未来的趋势或行为。在实际生产和应用中,时序预测广泛应用于金融、电力、交通等领域。时序预测可以帮助人们更好地理解和掌握未来的趋势和规律,从而做出更明智的决策。 时序…

南大通用数据库-Gbase-8a-学习-34-gcdump(导出数据库对象定义)

目录 一、测试环境 二、介绍 三、命令帮助 四、参数介绍 1、--print-defaults (1)含义 (2)例子 2、--connect_timeout (1)含义 (2)例子 3、-A, --all-databases &#xf…

10款比较好用的网页设计工具

网页设计软件的轻量化和在线协作已成为当前网页制作软件的发展趋势。网页设计并不容易,易于使用的网页UI设计软件更难找到。随着网络的快速发展,网站迅速崛起,网页设计也很受欢迎。网页设计软件即时设计是一种在线协作设计工具,深…

密歇根大学Python系列之一:零基础 Python 入门

密歇根大学计算机专业注重将计算机科学理论与实践相结合,旨在帮助学生全面掌握计算机科学的基础理论和实践技能: 1.计算机程序设计:编程技能和常见编程语言,如C和Java和Python等; 2.数据结构和算法:数据结…

不同局域网下使用Python自带HTTP服务进行文件共享「端口映射」

文章目录 1. 前言2. 视频教程3. 本地文件服务器搭建3.1 python的安装和设置3.2 cpolar的安装和注册 4. 本地文件服务器的发布4.1 Cpolar云端设置4.2 Cpolar本地设置 5. 公网访问测试6. 结语 转载自内网穿透工具的文章:Python一行代码实现文件共享【内网穿透公网访问…

SpringBoot的配置和日志

1.配置文件的作用和意义 配置文件中配置整个项目中所有重要的数据,比如: 1.数据库的连接信息(包含用户名和密码的设置); 2.项目的启动端口; 3.第三方系统的调用秘钥等信息; 4.用于发现和定位问…

如何利用 GPT 开发智能应用?微软提出这九大原则

毫无疑问,GPT 的出现以日新月异的速度改写了软件开发的工作方式。 兴奋,也许也有点焦虑。作为开发人员,如何在 GPT 时代与人工智能协作?在「万物皆有副驾驶」的年代,如何划定分工边界,让 GPT 成为开发人员…

如何使用命令行添加配置码云仓库SSH秘钥-git仓库也一样

使用命令行添加配置码云仓库SSH秘钥 为什么要如何使用命令行添加配置码云仓库SSH秘钥?生成密钥你可以按如下命令来生成 sshkey:可以参考下图执行指令 添加密钥登录你的码云,鼠标移入头像,设置。点击 SSH公钥,打开配置页面&#x…

【LeetCode: 1143. 最长公共子序列 | 暴力递归=>记忆化搜索=>动态规划】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

如何在比特币系统内创造人工生命

信息来源:coingeek.com 自2015年以来,关于比特币能否进行复杂计算以及比特币是否“图灵完备”的争论一直在持续。不幸的是,现在存在着一种流传甚广的谬论,有人说比特币并非图灵完备的,它不能像以太坊区块链那样进行复杂…

第四章 使用Maven:IDEA环境

1、创建 Project2、开启自动导入 TIP 各个 IDEA 不同版本在具体操作方面存在一定差异,这里我们以 2019.3.3 版本为例进行演示。其它版本大家灵活变通即可。 第一节 创建父工程 创建 Project 开启自动导入 创建 Project 后,IDEA 会自动弹出下面提示…

ROS学习5:ROS常用组件

【Autolabor初级教程】ROS机器人入门 1. TF 坐标变换 背景 现有一移动式机器人底盘,在底盘上安装了一雷达,雷达相对于底盘的偏移量已知,现雷达检测到一障碍物信息,获取到坐标分别为(x,y,z),该坐标是以雷达为参考系的…

快速下载VScode并配置Python运行环境【详细教程】

快速下载VScode并配置Python运行环境【详细教程】 博主:命运之光 目录 快速下载VScode并配置Python运行环境【详细教程】前言下载vscode第一步vscode官网下载第二步点击下载![请添加图片描述](https://img-blog.csdnimg.cn/1d76c427314b4ddcbd350e0a7e5449d5.png)第…

数据湖Iceberg-存储结构(2)

文章目录 存储结构数据文件 data files表快照 Snapshot清单列表 Manifest list清单文件 Manifest file 数据湖Iceberg-简介(1) 数据湖Iceberg-存储结构(2) 数据湖Iceberg-Hive集成Iceberg(3) 数据湖Iceberg-SparkSQL集成(4) 数据湖Iceberg-FlinkSQL集成(5) 数据湖Iceberg-Flink…

【移动端网页布局】流式布局案例 ① ( 视口标签设置 | CSS 样式文件设置 | 布局宽度设置 | 设置最大宽度 | 设置最小宽度 )

文章目录 一、视口标签设置二、CSS 样式文件设置三、布局宽度设置1、设置布局宽度2、设置布局最大宽度3、设置布局最小宽度4、查看网页最大最小宽度5、布局宽度设置 四、代码示例1、主界面标签2、CSS 布局设置 一、视口标签设置 参考 【移动端网页布局】移动端网页布局基础概念…

第三章 使用 Maven:命令行环境

第一节 实验一:根据坐标创建 Maven 工程 Maven 核心概念:坐标 ①数学中的坐标 使用 x、y、z 三个**『向量』作为空间的坐标系,可以在『空间』中唯一的定位到一个『点』**。 ②Maven中的坐标 [1]向量说明 使用三个**『向量』在『Maven的仓…