三十七、XA模式

目录

一、XA模式原理

在XA模式中,一个事务通常被分为两个阶段:

二、Seata的XA模式

RM一阶段的工作:

TC一阶段的工作:

RM二阶段的工作:

1、优点:

2、缺点:

三、实现XA模式

1、修改yml文件,开启XA模式

2、给发起全局事务的入口方法添加@GlobalTransactional注解


一、XA模式原理

  • XA模式是一种分布式事务处理模式,常用于多个数据库之间的事务处理。
  • 在XA模式中,一个事务被视为由一个或多个资源管理器(例如数据库)控制的一系列操作。
  • 这些资源管理器必须支持XA协议,以确保事务的一致性和可靠性。

在XA模式中,一个事务通常被分为两个阶段:

  • 准备阶段和提交阶段。
  • 在准备阶段,事务管理器将事务状态记录到事务日志,通知各个资源管理器准备执行相关操作。
  • 在提交阶段,事务管理器将事务提交或回滚,并通知各个资源管理器进行相应操作。
  • XA模式保证了多个数据库之间的事务操作的一致性和可靠性。

  1. 总的思路是,RM每次完成了任务都要向事务协调者返回消息;
  2. 事务协调者根据获得的消息来选择进入下一阶段或是回滚

二、Seata的XA模式

RM一阶段的工作:

  1. 注册分支事务到TC
  2. 执行分支业务sql但不提交
  3. 报告执行状态到TC

TC一阶段的工作:

  • TC检测各分支事务执行状态

  1. 如果都成功,通知所有RM提交事务
  2. 如果有失败,通知所有RM回滚事务

RM二阶段的工作:

接收TC的指令,选择提交或回滚

1、优点:

事务的强一致性,满足 ACID 原则。
常用数据库都支持,实现简单,并且没有代码侵入

2、缺点:

因为一阶段需要锁定数据库资源,等待二阶段结束才释放,性能较差
依赖关系型数据库实现事务

三、实现XA模式

1、修改yml文件,开启XA模式

  data-source-proxy-mode: XA

2、给发起全局事务的入口方法添加@GlobalTransactional注解

  • 发起全局事务的入口方法是指启动一个全局事务的入口方法,一方面它可以创建全局事务对象来跟踪全局事务的状态和参与者,另一方面它可以协调分支事务之间的执行,确保它们成功地提交或者回滚。
  • 在分布式系统中,由于业务涉及多个不同的节点和资源,会很容易出现分支事务之间存在数据不一致的情况,所以需要使用分布式事务来保证数据的一致性。发起全局事务的入口方法是指在这种情况下,通过调用分布式事务中间件提供的API,启动一个全局事务,将该事务拆分成多个分支事务,并为每个分支事务创建一个事务上下文,同时协调分支事务的执行,保证最终的数据一致性。
  • 不同的分布式事务中间件提供不同的API来启动全局事务,但通常都会包括创建全局事务对象和注册分支事务等步骤。

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

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

相关文章

数据结构实验任务六 :基于 Dijsktra 算法的最短路径求解

本次代码为实验六:基于 Dijsktra 算法的最短路径求解实现。本实验的重点在于对于Dijsktra算法的理解。有关Dijsktra的资料可以参考有关博文: 图论:Dijkstra算法——最详细的分析,图文并茂,一次看懂!-CSDN博客 以下附上…

Vision Transformer

Vision Transformer详解-CSDN博客 视频:11.1 Vision Transformer(vit)网络详解_哔哩哔哩_bilibili Vision Transformer学习笔记_linear projection of flattened patches-CSDN博客 一、embedding 层 对于标准的Transformer模块,要求输入的是token (向量…

win10使用copilot(尝试中)

一、 Microsoft account | Sign In or Create Your Account Today – Microsoft 一路next全部点好【1】 二、 查看当前win10的版本,cmd输入命令winver 三、 修改区域为美国 四、更新和安全 Reference 【1】完美|在 Win10 强行开启 Win11 的独有功能…

蓝桥杯每日一题2023.12.4

题目描述 竞赛中心 - 蓝桥云课 (lanqiao.cn) 题目分析 本题使用树型DP,蓝桥杯官网出现了一个点的错误,但实际答案是正确的 状态表示:f[u]:在以u为根的子树中包含u的所有联通块的权值的最大值 假设s1,s2,…sk 是u的…

腾讯云双十二优惠活动有哪些?详细攻略来了!

腾讯云作为全球领先的云计算服务提供商,一直在为各行各业的用户提供优质、高效、稳定的云计算服务。双十二即将来临,腾讯云也为大家准备了一系列丰富多彩的优惠活动。那么,这些优惠活动究竟有哪些?详细攻略在此,一起来…

jsp高校教师调课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 高校教师调课管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

洗浴按摩店服务预约管理系统会员小程序效果如何

洗浴按摩是线下服务需求度较高的行业,如今互联网趋势下,传统线下实体店面临多重经营痛点,需要商家转而线上管理及赋能客户消费、完善订单流程,多平台宣传让目标客户触达。 接下来让我们看看通过【雨科】平台搭建洗浴按摩店管理系…

22款奔驰GLE450升级香氛负离子 车载香薰功能

相信大家都知道,奔驰自从研发出香氛负离子系统后,一直都受广大奔驰车主的追捧,香氛负离子不仅可以散发出清香淡雅的香气外,还可以对车内的空气进行过滤,使车内的有害气味通过负离子进行过滤,达到车内保持清…

【C#】读取ini配置文件的内容

一、编写ini配置文件 ini文件时初始化文件,通常是系统配置文件所采用的存储格式。ini文件有自己的固定格式,是由若干个“节”(section)组成,每个节由若干个“键”(key)组成,每个key…

【cmake】获取到某个目录下的所有子目录名

整体工程目录结构如下。现打算获取到vac目录下的所有子目录名。 cmake 实现如下: # 设定要遍历的目录,保存到 VAC_INCLUDE_DIR 变量 set(VAC_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/vac)# 获取到当前目录下的所有文件和目录(以相对路径的方式)&a…

【源码篇】基于SpringBoot+thymeleaf实现的蓝天幼儿园管理系统

基于SpringBootthymeleaf实现的蓝天幼儿园管理系统 文章目录 系统说明技术选型成果展示账号地址及其他说明 系统说明 基于SpringBootthymeleaf实现的蓝天幼儿园管理系统是为幼儿园提供的一套管理平台,可以提高幼儿园信息管理的准确性,系统将信息准确无误…

idea保存时自动删除不用的import

1、File->setting 2、Editor->General->Auto Import 按照操作,即可实现!!!!!!!

讲解商品比价API使用说明

今日讲解商品比价API使用说明 商品数据分析 国内最早的比价搜索平台,专注于电商大数据的分析,有10年技术和数据沉淀。 公司自主研发的爬虫、搜索引擎、分布式计算等技术, 实现了对海量电商数据的及时监测、清洗和统计。 数据丰富 详细使…

基于社区电商的Redis缓存架构-用户分享内容的分页列表缓存延迟构建以及异步通知缓存重建

分页列表缓存的延迟构建 首先,先来讲一下业务场景,用户会在 APP 中去分享内容,那么假如用户分享的是美食菜谱内容,在用户分享之后,先将这个美食菜谱的内容作为 k-v 进行缓存,但是呢,其实对于用…

交通强国添力量 无人机巡航为何备受期待?

在高速建设交通强国的过程中,交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用,以构建更为全面的监管体系。尽管已初步建立了海事监管体系,但仍存在…

可用的镜像 yum 源

目录 ftp.sjtu.edu.cn 镜像 yum 源centos 的镜像 yum 源 mirrors.sohu.comcentos 的镜像 yum 源 mirrors.163.comcentos 的镜像 yum 源 ftp.sjtu.edu.cn 镜像 yum 源 镜像 yum 源地址 : http://ftp.sjtu.edu.cn/centos/ centos 的镜像 yum 源 http://ftp.sjtu.edu…

解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化

几个月前我们就聊过RAG的经典方案解密Prompt系列14. LLM Agent之搜索应用设计。前几天刚看完openAI在DevDay闭门会议上介绍的RAG相关的经验,有些新的感悟,借此机会再梳理下RAG相关的优化方案。推荐直接看原视频(外网)A Survey of …

github问题解决(持续更新中)

1、ssh: connect to host github.com port 22: Connection refused 从.ssh文件夹中新建文件名为config,内容为: Host github.com Hostname ssh.github.com Port 4432、解决 git 多用户提交切换问题 使用系统命令ssh创建rsa公私秘钥 C:\Users\fyp01&g…

zabbix配置snmp trap--使用snmptrapd和Bash接收器(缺zabbix_trap_handler.sh文中自取)--图文教程

1.前言 我的zabbix的版本是5.0版本,5.0的官方文档没有使用bash接收器的示例,6.0的官方文档有使用bash接收器的示例,但是,下载文件的链接失效?! 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

[oeasy]python0002_终端_CLI_GUI_编程环境_游戏_真实_元宇宙

回忆 上次 了解了 python 语言的特点 历史悠久功能强大深受好评已成趋势 3大主流操作系统 macwindowslinux 我们 选择 linux 作为基础系统 为什么选择 黑乎乎的命令行界面呢?🤔 GUI vs CLI 个人电脑 用图标和菜单组成 图形界面(GUI) Graphic User I…