分布式事务02-Jta+Atomikos解决分布式事务

本文介绍了Jta+Atomikos在分布式事务中的应用,讲解了XA协议、JTA的概念,深入剖析了两阶段提交(2PC)和三阶段提交(3PC)协议的工作原理,以及它们的区别。同时,给出了使用Atomikos进行分布式事务管理的代码实现步骤。
摘要由CSDN通过智能技术生成

1.基本概念

1.1 Jta+Atomikos 简介

传统项目中,比如项目中使用到多数据源的时候大多数采用jta+Atomikos解决分布式事务问题,jta+Atomikos底层是基于XA协议的两阶段提交方案。

1.2 XA协议

XA 事务的基础是两阶段提交协议。分为以下两阶段

  1. 需要有一个事务协调者来保证所有的事务参与者都完成了准备工作。
  2. 如果协调者收到所有参与者都准备好的消息,就会通知所有的事务都可以提交了。

Mysql 在这个XA事务中扮演的是参与者的角色,而不是协调者(事务管理器)。

1.3 JTA

JTA(java Transaction API)是JavaEE 13 个开发规范之一。java 事务API,允许应用程序执行分布式事务处理——在两个或多个网络计算机资源上访问并且更新数据。JDBC驱动程序的JTA支持极大地增强了数据访问能力。事务最简单最直接的目的就是保证数据的有效性,数据的一致性

1.4 Atomikos

Atomikos TransactionsEssentials 是一个为Java平台提供增值服务的并且开源类事务管理器

2.阶段提交协议

2.1 两阶段提交协议

在这里插入图片描述

  • 第一阶段(准备阶段):
    协调者向参与者发起指令,参与者评估自己的状态,如果参与者评估指令可以完成,则会写redo或者undo日志,让后锁定资源,执行操作,但并不提交。
  • 第二阶段:
    如果每个参与者明确返回准备成功,则协调者向参与者发送提交指令,参与者释放锁定的资源,如何任何一个参与者明确返回准备失败,则协调者会发送中指指令,参与者取消已经变更的事务,释放锁定的资源。

两阶段提交方案应用非常广泛,几乎所有商业OLTP数据库都支持XA协议。但是两阶段提交方案锁定资源时间长,对性能影响很大,基本不适合解决微服务事务问题。

缺点:如果协调者宕机,参与者没有协调者指挥,则会一直阻塞。

2.2 三阶段提交协议

三阶段提交协议是两阶段提交协议的改进版本。它通过超时机制解决了阻塞的问题,并且把两个阶段增加为三个阶段:

  • 询问阶段:协调者询问参与者是否可以完成指令,协调者只需要回答是还是不是,而不需要做真正的操作,这个阶段超时导致中止。

  • 准备阶段:如果在询问阶段所有的参与者都返回可以执行操作,协调者向参与者发送预执行请求&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值