【转】关于JTA,XA,ACID
对于我们这种初学者,可能会使用spring带给我们的@Transactional,可能了解JTA,可能会使用jotm、atomikos,又会遇到一些名词XA,支持XA的数据库驱动等等诸多问题,然后就会愈加混乱,自然形成一个疑问,庞大的事务体系的全貌到底是什么样?
XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁。XA之所以需要引入事务管理器是因为,在分布式系统中,从理论上讲(参考Fischer等的论文),两台机器理论上无法达到一致的状态,需要引入一个单点进行协调。事务管理器控制着全局事务,管理事务生命周期,并协调资源。资源管理器负责控制和管理实际资源(如数据库或JMS队列)
2 需要解决的疑惑
下面就要具体列出一系列需要解决的问题
2.1 对于事务模型
- 三种事务模型是什么?各自的特点是什么?各自的缺陷是什么?
2.2 spring对于事务模型的支持
spring自己的一系列接口设计:
- PlatformTransactionManager 事务管理器
- TransactionDefinition 事务定义
- TransactionStatus 事务状态
等等
上述一系列接口的实现是如何对非分布式和分布式事务的支持的呢?
2.3 针对分布式事务的规范
X/Open DTP模型是什么?几个重要的概念是什么?
XA规范是什么?
2PC是什么?
2.4 针对JTA
JTA是什么?JTS又是什么?
JTA与上述的规范又是什么关系?
JTA的接口都有哪些?分别是什么作用
JTA接口中有一个javax.transaction.TransactionManager,如何理解它与上述的PlatformTransactionManager呢?即它们各自的职责是什么?
2.5 对于JTA实现
分布式事务需要数据库和驱动程序支持的吗?还是使用一般的数据库和驱动程序也可以实现分布式事务?
XADataSource与DataSource、XAConnection与Connection等等接口
某些应用服务器没有实现JTA,如tomcat,某些应用服务器实现了JTA,如JBoss,具体是怎么实现的呢?
jotm、atomikos又是怎么来实现JTA的呢?需不需要数据库和驱动程序对XA的支持?
2PC对于初学者经常沦为一种概念,在代码中是如何体现的呢?如何模拟2PC呢?
3 研究过程
先从非分布式事务开始,趁机理解Spring对于事务的支持原理,然后过渡到分布式事务,理解分布式事务的概念,源码分析分布式事务框架jotm、atomikos,理解它们实现分布式事务的原理。
3.1 非分布式事务
- 1 jdbc事务开发的缺点
- 2 spring实现的编程式事务原理
- 3 spring利用AOP实现的声明式事务的接口设计与实现原理,为后面与jotm、atomikos的集成做铺垫
- 4 深刻理解了上面的例子后,再来看事务的三种模型,各自的特点、各自的缺陷
3.2 分布式事务的一系列概念
- 1 X/Open DTP模型、XA规范、2PC
- 2 JTA、JTS概念
- 3 JTA接口定义的理解
3.3 JTA的实现
- 1 jotm的例子,以及源码分析实现分布式事务的原理(如何体现2PC的过程)
- 2 atomikos对非XADataSource和XADataSource的支持的例子,以及源码分析实现分布式事务的原理(如何体现2PC的过程)
- 3 JBoss支持分布式事务的原理
【转】关于JTA,XA,ACID的更多相关文章
- Spring+iBatis+Atomikos实现JTA事务
Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品. 产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTransacti ...
- 使用Atomikos Transactions Essentials实现多数据源JTA分布式事务--转载
原文:http://www.ite/topic/122700 9.17 update:使用NonXADataSourceBean. Mysql在5.0版本和Connecter/J5.0版本后提供了XA ...
- spring+mybatis+Atomikos JTA事务配置说明
一.概览 Atomikos是一个公司名字,旗下最著名的莫过于其Atomikos的事务管理器产品.产品分两个:一个是开源的TransactionEssentials,一个是商业的ExtremeTrans ...
- 解决分布式事务基本思想Base和CPA理论、最终一致性|刚性事务、柔性事务
在学习解决分布式事务基本思路之前,大家要熟悉一些基本解决分布式事务概念名词比如:CAP与Base理论.柔性事务与刚性事务.理解最终一致性思想,JTA+XA.两阶段与三阶段提交等. 如何保证强一致性呢? ...
- 几款开源ESB总线的比较
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- 几款开源ESB总线的比较(转)
现有的开源ESB总线中,自从2003年第一个开源总线Mule出现后,现在已经是百花争鸣的景象了.现在我就对现有的各种开源ESB总线依据性能.可扩展性.资料文档完整程度以及整合难易程度等方面展开. CX ...
- dubbo基本信息
1.Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目. 面试官问你如果这个都不清楚,那下面的就没必要问了. 官网: ...
- Dubbo 分布式事务一致性实现
我觉得事务的管理不应该属于Dubbo框架, Dubbo只需实现可被事务管理即可, 像JDBC和JMS都是可被事务管理的分布式资源, Dubbo只要实现相同的可被事务管理的行为,比如可以回滚, 其它事务 ...
- (转)史上最全 40 道 Dubbo 面试题及答案,看完碾压面试官!
背景:因为自己的简历写了dubbo,面试时候经常被问到.实际自己对dubbo的认识只停留在使用阶段,所以有必要好好补充下基础的理论知识. https://zhuanlan.zhihu.com/p/45 ...
随机推荐
- Day 32 网络编程
一.网络协议基础篇 一台完整的计算机由硬件.系统.软件组成,具备这三个条件,计算机就可以运行,但是只能自己和自己玩.为了实现计算机和计算机间的连接,就需要借助互联网,如全世界人类交流将英语作为标准语言 ...
- BZOJ3775: 点和直线(计算几何+拉格朗日乘数法)
题面 传送门 题解 劲啊-- 没有和\(Claris\)一样推,用了类似于\(Shinbokuow\)推已知点求最短直线的方法,结果\(WA\)了好几个小时,拿\(Claris\)代码拍了几个小时都没 ...
- docker镜像基本操作一
获取镜像 首先说明一下如何从Docker hub中获取高质量的镜像,从Docker镜像库获取镜像的命令是docker pull .其命令格式为: docker pull [选项] [Docker Re ...
- [Swift实际操作]七、常见概念-(5)使用NSString对字符串进行各种操作
本文将为你演示字符串NSString的使用,NS是Cocoa类对象类型的前缀,来源于乔布斯建立的另一家公司--NeXT NSString的使用方法,和Swift语言中的String有很多相似之处.首先 ...
- Git进行fork后如何与原仓库同步
在进行Git协同开发的时候,往往会去fork一个仓库到自己的Git中,过一段时间以后,原仓库可能会有各种提交以及修改,很可惜,Git本身并没有自动进行同步的机制,这个需要手动去执行.name如何进行自 ...
- 非常好用的@ResponseBody注解
AJAX的写法: ajax接收json格式: ①如果ajax接收的是text dataType:"text", var json = eval("(" + da ...
- HTML基本标记1.1
HTML头部标记head 在HTML语言的头部元素中,一般包括标题,基础信息和元信息等.HTML的头部元素以<head>为开始标记,以</head>为结束标记 语法: < ...
- 使用TopShelf做windows服务安装 ---安装参数解释
转自:https://topshelf.readthedocs.io/en/latest/overview/commandline.html Topshelf Command-Line Referen ...
- 使用Jacob操作Wrod文档的工具类代码
一.需要有jacob的jar包支持 import java.util.Iterator; import java.util.List; import java.util.HashMap; import ...
- 手机访问电脑中部署的tomcat应用
手机访问电脑中部署的tomcat应用. 操作步骤: 第一种:有无线路由的情况. 1.建议局域通信. 操作如下:电脑,手机都自动连接到无线路由器中(无线路由不必非要联网). 2.启动电脑用的tomcat ...