首页 > 其他分享 >XA分布式事务协议

XA分布式事务协议

时间:2023-10-25 17:23:22浏览次数:31  
标签:事务 管理器 数据库 XA 资源管理 分布式

       XA(eXtended Architecture)是指由X/Open 组织提出的分布式交易处理的规范。XA 是一个分布式事务协议,由Tuxedo 提出,所以分布式事务也称为XA 事务XA 协议主要定义了事务管理器TM(Transaction Manager,协调者)和资源管理器RM(Resource Manager,参与者)之间的接口。其中,资源管理器往往由数据库实现,如Oracle、DB2、MySQL,这些商业数据库都实现了XA 接口,而事务管理器作为全局的调度者,负责各个本地资源的提交和回滚。XA 事务是基于两阶段提交(Two-phaseCommit,2PC)协议实现的,可以保证数据的强一致性,许多分布式关系型数据管理系统都采用此协议来完成分布式。阶段一为准备阶段,即所有的参与者准备执行事务并锁住需要的资源。当参与者Ready时,向TM 汇报自己已经准备好。阶段二为提交阶段。当TM 确认所有参与者都Ready 后,向所有参与者发送COMMIT 命令。

        XA 事务允许不同数据库的分布式事务,只要参与在全局事务中的每个结点都支持XA 事务。Oracle、MySQL 和SQL Server 都支持XA 事务。

        XA 事务由一个或多个资源管理器(RM)、一个事务管理器(TM)和一个应用程序(ApplicationProgram)组成。

  资源管理器:提供访问事务资源的方法。通常一个数据库就是一个资源管理器。

  事务管理器:协调参与全局事务中的各个事务。需要和参与全局事务的所有资源管理器进行通信。

  应用程序:定义事务的边界。

  XA 事务的缺点是性能不好且无法满足高并发场景。一个数据库的事务和多个数据库间的XA 事务性能会相差很多。因此,要尽量避免XA 事务,如可以将数据写入本地,用高性能的消息系统分发数据,或使用数据库复制等技术。只有在其他办法都无法实现业务需求,且性能不是瓶颈时才使用XA。

标签:事务,管理器,数据库,XA,资源管理,分布式
From: https://www.cnblogs.com/xuzhujack/p/17787717.html

相关文章

  • WPF 纯xaml实现控件运动动画
    1、Image控件加载后上下运动2、Image控件可以放在Grid等布局控件中3、指定加载时触发动画:EventTriggerRoutedEvent="Image.Loaded"4、指定动画的起止位置,和运动周期1<ImageGrid.Row="1"Grid.Column="1"VerticalAlignment="Top"Margin="0,40,0,0"Ho......
  • 什么是幻读,脏读,不可重复读?事务的各个隔离级别都是如何实现的?
    一、什么是幻读,脏读,不可重复读?事务A、B交替执行,事务A读取到事务B未提交的数据,这就是脏读。在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。事务A查询一个范围的结果集,另一个并发事务B往这个范围中插入/删除了数据,并悄悄提交,之后事务A再次查询相......
  • 大事务导致数据库恢复时间长
    背景客户的一套系统从凌晨开始出现运行缓慢,重启SQLServer服务后一个主要的数据库一直处在正在恢复的状态,多次重启SQLServer服务和服务器无果后请我们协助处理。现象在SSMS中看到数据库是正在恢复的状态,而且不能被访问。 分析启动SQLServer服务时数据库恢复要经过分......
  • 「Java开发指南」如何在MyEclipse中使用JPA和Spring管理事务?(二)
    本教程中介绍一些基于JPA/spring的特性,重点介绍JPA-Spring集成以及如何利用这些功能。您将学习如何:为JPA和Spring设置一个项目逆向工程数据库表来生成实体实现创建、检索、编辑和删除功能启用容器管理的事务在上文中,我们为大家介绍了如何用JPA和SpringFacets创建一个Java......
  • 分布式锁优化(基于redisson实现)
    基于setnx实现的分布式锁存在下面的问题:1.不可重入同一个线程无法多次获取同一把锁2.不可重试获取锁只尝试一次就返回false,没有重试机制3.超时释放锁超时释放虽然可以避免死锁,但如果是业务执行耗时较长,也会导致锁释放,存在安全隐患4.主从一致性(主写从读)如果Redis提供了主从集群,主......
  • MySQL 事务的四大特性;ACID靠什么保证的?事务的隔离级别有哪些?MySQL 的默认隔离级别是什
    一、MySQL事务的四大特性原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):指在事务开始之前和事务结束以后,数据不会被破坏,假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。隔离性(Isolation):......
  • @Transactional:声明式事务管理,保证数据一致性
    一、介绍通过使用@Transactional注解,我们可以更加方便地管理事务,保障数据的一致性和可靠性。在实际项目中,合理使用@Transactional注解可以提高「开发效率」和代码「可维护性」。二、用法@Transactional(rollbackFor=Exception.class)publicResponseDTO<String>update(No......
  • sqlserver 事务隔离级别与脏读、不一致读、幻读
    sqlserver查询窗口的默认事务隔离级别为:readcommitted,可以通过下面SQL语句查看:SELECTCASEtransaction_isolation_levelWHEN0THEN'Unspecified'WHEN1THEN'ReadUncommitted'WHEN2THEN'ReadCommitted'......
  • 分布式定时任务-利用分布式定时任务框架xxl-job实现任务动态发布
     1.场景:项目前期使用k8s部署的单节点,后期生产需要将单节点的服务扩展多个节点,每个节点的定时任务使用的quartz实现,如果不加限制且定时任务有对数据库的写操作,在不同节点上执行的定时任务容易造成数据库产生脏数据,所以需要分布式任务框架对任务进行控制,这里我们使用xxl-job实现。......
  • 分布式事务
    本地事务在分布式下会出现的问题只能各自回滚各自的簇点头那边抛出异常--->全部回滚(ok)簇点第一个远程调用返回code不正确,我们可在主方法这抛异常(ok)簇点非第一个远程调用code不正确,我们只有那个远程调用和主方法会rollback,在其之前的远程调用无法rollback没人通知(NO)......