美文网首页
分布式事务

分布式事务

作者: lsh的学习笔记 | 来源:发表于2020-05-09 17:16 被阅读0次

什么是XA事务?

XA协议由Tuxedo首先提出的,并交给X/Open组织,作为资源管理器(数据库)与事务管理器的接口标准。

目前,OracleInformixDB2Sybase等各大数据库厂家都提供对XA的支持。

XA协议采用两阶段提交方式来管理分布式事务

什么是分布式事务?

指的是允许多个独立的事务资源(transactional resources)参与到一个全局事务中。

InnoDB 对分布式事务的支持

InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务实现

在使用分布式事务时,InnoDB存储引擎的事务隔离级别必须设置为SERIALIZABLE

有哪些部分组成?

XA事务由一个或多个资源管理器(ResourceManagers)、一个事务管理器(TransactionManager)以及一个应用程序(ApplicationProgram)组成。

  • 资源管理器:提供访问事务资源的方法。通常是关系型数据库系统,一个数据库就是一个资源管理器。但也可以是其他类型的资源。

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

  • 应用程序:定义事务的边界,指定全局事务中的操作。

工作流程

分布式事务使用两段式提交(two phase commit)的方式。

第一阶段

所有参与全局事务的节点都开始准备(PREPARE),告诉事务管理器它们准备好提交了。

第二阶段

事务管理器告诉资源管理器执行 ROLLBACK 还是 COMMIT 。

如果任何一个节点显示不能提交,则所有的节点都被告知需要回滚。

与本地事务的不同

分布式事务需要多一次的 PREPARE 操作,待收到所有节点的同意信息后,再进行 COMMIT 或是 ROLLBACK 操作。

语法

MySQL数据库XA事务的SQL语法如下:

XA [START|BEGIN] xid [JOIN|RESUME];
XA END xid [SUSPEND[FOR MIGRATE]];
XA PREPARE xid;
XA COMMIT xid [ONE PHASE];
XA ROLLBACK xid;
XA RECOVER;

限制

在单个节点上运行分布式事务没有太大的实际意义,但是要在MySQL数据库的命令下演示多个节点参与的分布式事务也是行不通的。

通常来说,都是通过编程语言来完成分布式事务的操作的。

当前Java的JTA(JavaTransactionAPI)可以很好地支持MySQL的分布式事务,需要使用分布式事务应该认真参考其API。

相关文章

  • 分布式事务与分布式锁

    一、分布式事务 什么事分布式事务 分布式事务就是指事务的资源分别位于不同的分布式系统的不同节点之上的事务。 分布式...

  • 微服务分布式事务--破局

    微服务架构下分布式事务设计实战 商品 订单 支付 分布式事务->长事务本地事务->短事务 分布式事务: 比如 下...

  • 分布式事务

    目录 分布式事务解决方案 长事务: saga 短事务: 设计的时候尽量短事务,能不用分布式事务尽量不用,分布式事务...

  • ATOMIKOS+JTA分布式事务记录

    ATOMIKOS+JTA是用来分布式事务的中间件,那么什么是分布式事务呢? 事务,分为单机事务,分布式事务;单机事...

  • 分布式事务

    一、什么是分布式事务 二、分布式事务产生的原因/分布式事务的应用场景 三、分布式事务的基础/理论 CAP/BASE...

  • 微服务 14:初探微服务分布式事务 - Seata

    1:什么是事务,什么是ACID 2:什么是分布式事务 3:分布式事务解决方案 4:Seata 分布式事务框架 5:...

  • 分布式事务的解决方案

    本文从以下几个方面介绍分布式事务的解决方案: 为什么会有分布式事务分布式事务经典模型分布式事务解决方案 为什么会有...

  • MySQL分布式事务支持

    MySQL分布式事务介绍 InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式...

  • 微服务中分布式事务解决方案

    分布式事务解决方案 1、阿里巴巴seata分布式事务 2、 京东ShardingSphere分布式事务 3、tcc...

  • 解密分布式事务框架-Fescar

    1.分布式事务 我曾经能不用分布式事务就别用分布式事务,因为会引入很多的复杂度。虽然再网上有很多开源的分布式事务框...

网友评论

      本文标题:分布式事务

      本文链接:https://www.haomeiwen.com/subject/sczknhtx.html