【分布式架构】分布式事务理论与实践

news2024/11/26 0:46:18

一、分布式事务理论

1. ACID理论

场景:单机架构中保证事务的理论

2. CAP理论

场景:分布式架构中保证事务的理论

概念

  • 一致性:数据在不同的节点每一时刻都是一致的
  • 可用性:一部分的节点出现异常,但是系统仍然可用
  • 分区容错性:俩个节点分别在俩个区,如果出现网络问题导致俩个分区通信失败,没办法保证一致性了

2.1 CAP中的分区容错性

在这里插入图片描述

如图所示,如果数据库1和数据库2通讯出现问题了,无法同时满足一致性和可用性,因此一般的系统只能保证CP或者AP

  • AP:大型系统采用的模式,承载大流量,高并发的同时,还可以满足高可用性,要保证数据的最终一致性
  • CP:金融等要保证数据实时一致性的系统,牺牲可用性带来的用户体验比较差

3. BASE理论

场景:在AP的基础上进一步牺牲一致性,允许数据在一段时间内不一致,但最终会达到一致状态,保证基本可用性和柔性状态‌(柔性事务)

概念:

  • 基本可用:某个节点挂掉不用影响用户的请求
  • 软状态:允许数据出现中间状态
  • 最终一致性:数据保证最终一致性

二、分布式事务解决方案-2pc

1. 概念

一阶段(准备阶段):协调者向参与者发送请求,询问是否可以提交事务
二阶段(提交阶段):如果参与者都返回yes,参与者提交事务,如果其中一个返回no,参与者回滚事务

2. 实践—SEATA

2.1 名词解释

  • TC: seata服务端,用来控制分支事务的提交或回滚
  • TM: 全局事务的发起者
  • RM: 管理分支事务
  • XID: 全局事务id

2.2 流程原理

在这里插入图片描述

  1. TM向TC发起全局事务,获取全局事务id
  2. 微服务链路中,RM注册到TC中
  3. 全局事务链路执行完成,TM根据有无异常向TC发起全局事务提交或回滚
  4. TC给RM发消息,通知分支事务的提交或回滚

2.3 SEATA模式(AT/TCC/SAGA/XA)

  1. XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入。

  2. TCC模式:最终一致的分阶段事务模式,有业务侵入。

  3. AT模式:最终一致的分阶段事务模式,无业务侵入,也是Seata的默认模式。

  4. SAGA模式:长事务模式,有业务侵入。

FAQ

  1. 分布式事务2pc的缺点
    ● 性能差
    ● 存在阻塞问题,由此引入3pc;3pc相当是在一阶段的准备阶段新加了询问阶段,询问阶段的背景是提前检查是否有阻塞的问题

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

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

相关文章

【3dgs】3DGS与NeRF对比

以下是 3DGS(3D Geometry Sensing)与 NeRF(Neural Radiance Fields)对比表格: 更加详细的资料,轻参考: NERF/3DGS 对比维度3DGS (3D Geometry Sensing)NeRF (Neural Radiance Fields)基本原理…

【Linux进程信号】Linux信号产生机制详解:掌握系统通信的关键

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:Linux “ 登神长阶 ” 🌹🌹期待您的关注 🌹🌹 ❀Linux进程信号 📒1. 信号入门📜2. 信号捕捉初识📚3. 信号…

Windows应急响蓝安服面试

Windows应急响应 蓝队溯源流程 学习Windows应急首先要站在攻击者的角度去学习一些权限维持和权限提升的方法.,文章中的方法其实和内网攻防笔记有类似l红队教你怎么利用 蓝队教你怎么排查 攻防一体,应急响应排查这些项目就可以 端口/服务/进程/后门文件都是为了权限维持,得到s…

linux安装hadoop

目录 jdk安装配置 hadoop安装 hadoop配置 配置ssh免密登录 启动hadoop 实现文件上传下载 eclipse安装配置 jdk安装配置 1、删除centos自带的jdk yum list installed | grep java yum remove *openjdk* 2、下载jdk安装包 wget --no-check-certificate https://repo.h…

InternVid:用于多模态视频理解与生成的大规模视频-文本数据集 | ICLR Spotlight

InternVid 是一个开源的大规模视频-文本数据集,旨在促进视频理解和生成任务的发展,由上海人工智能实验室与南京大学、中国科学院等单位联合发布,相关的工作已经被ICLR2024接收。它包含超过 700 万个视频,总时长近 76 万小时&#…

位操作位操作位操作

呵呵哈哈哈哈哈哈哈哈哈和哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

MySQL—视图

前言: 视图是一个虚拟的表,是基于一个或多个基本表或其他视图的查询结果集。视图本身不占据物理储存空间,仅仅只是一个查询的逻辑表示,物理上依赖于数据表的数据。 视图具有简单,安全,逻辑数据独立&#…

CST软件优化超表面--- 偏振片- 线圆极化转换,天线阵任务,远场算轴比AR

本期我们继续看线极化转圆极化。本案例是个三层结构,比单层的偏振片有更宽的频率和更少的反射。我们将利用CST的天线阵列任务中的单元任务,加上优化器优化,使偏振片在多个入射角、多个频率,S11反射都够小,AR都够圆。 …

Spark-RDD的宽窄依赖以及Shuffle优化

目录 RDD宽窄依赖的区别 DAG有向无环图 窄依赖 宽依赖 shuffle过程 Shuffle介绍 Spark优化-避免shuffle RDD宽窄依赖的区别 窄依赖 每个父RDD的一个Partition最多被子RDD的一个Partition所使用 mapflatMapfilter宽依赖 一个父RDD的Partition会被多个子RDD的Partition所使…

LCD补充

LCD补充 目录 LCD补充 tip:随着我们学的越来越多,代码长度越来越长,编译越来越慢,有没有超过内存是我们比较关心的一件事,通过以下方法可以实时看到写的代码的大小 回顾LCD LCD补充功能 -- 1、有关在LCD上显示动图&#xff…

Python库matplotlib之九

Python库matplotlib之九 动画ArtistAnimation构造器成员函数应用例子 动画 Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。 Matplotlib使用两个类来实现动画&#x…

ordinaryroad-barrage-fly wsl部署记录

系统:win11 wsl版本:wsl2 Linux:Ubuntu 22.04.4 LTS 文档:https://barragefly.ordinaryroad.tech/deploy/#_2-1-docker-compose docker相关的内容自己事先安装好 git clone https://github.com/OrdinaryRoad-Project/ordinaryr…

TensorBoard

1、概念 TensorBoard可以看作是一个“训练监控仪表盘”,可以 将训练过程中的数据可视化,让你通过图表直观地看到模型的表现, 识别问题,并进行调试和优化。 TensorFlow是用来训练模型的深度学习框架,在使用tensorflo…

基于SpringBoot+Vue的疫情物资管理系统(带1w+文档)

基于SpringBootVue的疫情物资管理系统(带1w文档) 基于SpringBootVue的疫情物资管理系统(带1w文档) 本课题研究和开发疫情物资管理系统管理系统,让安装在计算机上的该系统变成管理人员的小帮手,提高疫情物资管理系统信息处理速度,规范疫情物资…

内网wordpress更换IP后无法访问的解决办法

一、现象 一台装有wordpress的台式机,从一个校区移到了另一个校区,更换了IP地址,导致无法正常访问。 二、分析 安装wordpress的时候里面的ip(或域名)都已固定。安装好后,内网通过IP访问&am…

基于Maven 运行OpenRewrite的快速示例

本篇介绍一个基于Maven 运行OpenRewrite 的快速示例,展示了如何在Maven项目中使用OpenRewrite 进行代码重构。 本篇达成的效果是使用OpenRewrite 对源码自动格式化。 达成效果期望 项目中有一个类AutoFormatDemo ,类的代码如下 public class AutoFor…

ubuntu24 root用户修改密码 ubuntu新系统没有创建root用户

ubuntu 系统在虚拟机新建一个ubuntu24,但是在配置系统时候,并没有配置root密码,只是新增了一个自定义账号于密码,在创建好后,可以登录系统,设置root密码~ 1. ubuntu系统初始化后,登录自建账号 …

Nullinux:一款针对Linux操作系统的安全检测工具

关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具,广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息,其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…

C# 结构和类

要点: 1、结构概述 2、结构的使用 一 为什么需要结构 问题: System.Drawing.Color有很多颜色值,它是一个枚举吗? 正常人眼可分辨的颜色种类可达几十万种以上 Color提供使用RGB值返回颜色的方法 FromArgb() System.Drawing.Col…

LabVIEW开关磁阻电机特性测量系统

基于LabVIEW软件和特定硬件组件的开关磁阻电机(SRM)特性测量系统,结合多功能数据采集卡,统能够准确地测量并分析SRM的电磁特性,从而支持电机模型的精确建立和性能优化。 项目背景 在工业生产和家用电器领域&#xff0…