SpringCloud面试题——分布式事务

一:什么是分布式事务?

分布式事务是指在分布式系统中涉及到多个数据库或多个应用程序之间的事务处理,这些数据库或应用程序可能分布在不同的物理节点上,甚至可能位于不同的地理位置。在分布式事务中,需要确保所有参与者的事务操作都能够保持一致性,即所有参与者的事务要么全部提交成功,要么全部回滚。

二:常见的分布式事务有哪些?

分布式事务的目的是保证分布式系统中的多个参与方的数据能够保证一致性。即所有参与者,在一次写操作过程中要么都成功,要么都失败。至于这个一致性到底是怎样的一致性,是强一致性、还是最终一致性,不同的分布式事务方案其实达到的效果并不相同。

三:什么是Seata?他有哪几种模式?

Seata是一个阿里开源的分布式事务解决方案(Simple Extensible Autonomous Transaction
Architecture),用于在分布式系统中实现分布式事务。它旨在简化分布式事务的开发和管理,帮助解决分布式系统中的数据一致性问题。
Seata目前支持4种模式,分别是:

  1. AT模式
  2. TCC模式
  3. Saga模式
  4. XA模式

四:seata原理

全局唯一的事务ID+三组件

  1. TC (事务协调者):维护全局和分支事务的状态,负责通知RM执行提交或回滚。
  2. TM(事务管理器):将不同的微服务组合起来一个完成的业务流程,职责是开始全局事务、提交或回滚全局事务。
  3. RM (资源管理器):具体的某个微服务为事务的分支,职责是执行每个分支事务的操作。
    在这里插入图片描述

五:一次分布式事务的大致流程

  1. TM在接收到用户的下单请求后,会先调用TC创建一个全局事务,并且从TC获取到他生成的
    XID
  2. TM开始通过RPC/Restiali调用各个RM,调用过程中需要把XID同时传递过去。
    在这里插入图片描述
  3. RM通过其接收到的XID,将其所管理的资源且被该调用锁使用到的资源注册为一个事务分支
    在这里插入图片描述
  4. 当该请求的调用链全部结束时,TM根据本次调用是否有失败的情况,如果所有调用都成
    功,则决议Commit,如果有超时或者失败,则决议Rollback。
  5. TM将事务的决议结果通知TC,TC将协调所有RM进行事务的二阶段动作,该回滚回滚,该
    提交提交。
    在这里插入图片描述

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

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

相关文章

PPT插件-好用的插件-图形缩放-大珩助手

图形缩放 包括适合屏幕、适合宽度、适合高度、水平翻转、垂直翻转、指定角度,可同时对多个形状进行操作 适合屏幕 一键设置图像、文本、形状的长宽尺寸与当前幻灯片一致 适合宽度 一键设置图像、文本、形状的宽度尺寸与当前幻灯片一致 适合高度 一键设置图像…

智能优化算法应用:基于驾驶训练算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于驾驶训练算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于驾驶训练算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.驾驶训练算法4.实验参数设定5.算法结果6.参考…

DDOS攻击方式有哪些,要如何防护

DDOS攻击我们也称之为流量攻击,分布式拒绝服务攻击(英文意思是Distributed Denial of Service,简称DDOS)于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者…

Python3开发笔记(简洁版)

一、开发编辑器 1. pycharm 2. IDLE(Python自带软件) 方法:Microsoft Store搜索 Python 安装 二、数据类型 Python中有以下几种主要的数据类型: 数字(Numbers)、 字符串(Strings&#xff09…

2023年全国职业院校技能大赛信息安全管理与评估赛项正式赛(模块一)GZ032

全国职业院校技能大赛高等职业教育组 信息安全管理与评估 任务书 模块一 网络平台搭建与设备安全防护 极安云科专注技能竞赛,包含网络建设与运维和信息安全管理与评估两大赛项,及各大CTF,基于两大赛项提供全面的系统性培训,拥…

【入坑指南】| OpenCV4.8 + CUDA + 扩展模块支持编译

大家好,今天给大家分享一下最新版本OpenCV4.8如何编译支持CUDA加速,实现深度学习模型部署速度提升。 软件版本支持 CMake3.13 或者以上版本 https://cmake.org/ VS2017专业版或者以上版本 3050ti CUDA11.3 OpenCV4.8源码包 https://github.com/opencv…

三层交换的原理

一.三层交换技术 1.什么是三层交换机 要实现vlan间通信,就需要路由,解决办法要么是二层交换机加路由器形成单臂路由,要么就是直接使用三层交换机。 ①什么是单臂路由: ②单臂路由实现不同vlan间通信的原理: 路由器…

JVM的类的生命周期

目录 前言 1. 加载(Loading): 2. 验证(Verification): 3. 准备(Preparation): 4. 解析(Resolution): 5. 初始化(Ini…

Ubuntu解决Failed to fetch https://... Could not resolve ‘某个源‘

在我使用sudo apt install subversion的时候遇到报错: 这个报错与Ubuntu操作系统的软件源配置文件有关系。错误提示显示无法解析“mirrors.shanhe.com”地址,这可能是由于更新软件包列表或下载软件包时出现的网络问题。 1.可以先更新一下源试试&#xf…

Vue 子传父 组件传参 defineEmits

defineEmits 属性:用于创建自定义事件,接收子组件传递过来的数据。 注意:如果自定义事件的名称,和原生事件的名称一样,那么只会触发自定义事件。 defineEmits 仅适用于 setup 语法糖,其它写法请见&#x…

SpringBoot+SSM项目实战 苍穹外卖(5)(Redis入门)

继续上一节的内容,本节学习Redis,并实现营业状态设置功能。 目录 Redis环境搭建Redis数据类型Redis常用命令在Java中操作Redis环境搭建java操作常见类型数据 店铺营业状态设置设置营业状态管理端查询营业状态用户端查询营业状态swagger区分管理端和用户端…

CSAPP/ICS 系统级IO笔记

文件描述符:内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。 每…

Python移动未标注的图片数据集

Python移动未标注的图片数据集 前言前提条件相关介绍实验环境Python移动未标注的图片数据集情况一:有图,无标注文件代码实现输出结果 情况二:有图,有标注文件,但标注信息为空代码实现输出结果 情况一与情况二同时都考虑…

LabVIEW开发电能质量监测系统

LabVIEW开发电能质量监测系统 本研究基于LabVIEW开发了一个创新的电能质量监测系统,专注于暂态电能质量扰动信号的产生、分析与存储。该系统不仅模拟产生了电压骤降、电压波动、暂态振荡以及电压畸变等关键信号,还能够记录并存储这些扰动信号产生时的波…

Vmware Windows10安装Apache php

文章目录 一、下载必要的软件二、安装Apache三、安装php四、php连接Apache五、测试 一、下载必要的软件 Apache:https://www.apachelounge.com/download/ PHP:http://windows.php.net/download/ 二、安装Apache 将下载的压缩包解压,移动里…

MyBatis中的N+1问题,使用ResultSet来解决,需要存储过程【非常详细】

参考 https://mybatis.org/mybatis-3/zh/sqlmap-xml.html https://mybatis.net.cn/sqlmap-xml.html#Result_Maps 基础表sql 订单表 CREATE TABLE test_order (order_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单id,order_name varchar(255) NOT NULL DEFAULT COMME…

KITTI数据集处理为COCO数据集格式

KITTI作为自动驾驶常用数据集,被广泛的应用于自动驾驶目标检测等过程中。 首先是数据集类别合并,原始的KITTI数据集有九个类别,分别是: Car Van Truck Pedestrian Person_sitting Cyclist Tram Misc而我们在使用过程中&#xff0…

GO并发编程综合应用

一.GO并发编程综合应用 1.生产者消费者模式 1.1需求分析 ​ 生产者每秒生产一个商品,并通过物流公司取货 ​ 物流公司将商品运输到商铺 ​ 消费者阻塞等待商铺到货,需要消费10次商品 1.2实现原理 1.3代码实现: package mainimport (&q…

SpringCloud微服务 【实用篇】| Docker启示录

目录 一:Docker启示录 1. Docker启示录 2. Docker和虚拟机的区别 3. Docker架构 4. Centos7安装Docker 4.1. 卸载 4.2. 安装docker 4.3. 启动docker 4.4. 配置镜像加速 前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…

Python之random模块详解

python的random模块 random模块是python中一个生成随机数的模块。 random不是python解释器内置的模块。 导入random模块的方法是: import random 如果只使用random模块中的单个方法的话,也可以使用 from random import method_name 例如: …