天天看点

分布式事务系列(开篇)提出疑问和研究过程1 前言2 需要解决的疑惑3 研究过程4 结束语

系列目录

<a href="http://my.oschina.net/pingpangkuangmo/blog/413518">分布式事务系列(开篇)提出疑问和研究过程</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/415162">分布式事务系列(1.1)spring事务管理器platformtransactionmanager源码分析</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/416038">分布式事务系列(1.2)spring事务体系</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/417479">分布式事务系列(2.1)分布式事务模型与接口定义</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/419374">分布式事务系列(3.1)jotm的分布式案例</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/420831">分布式事务系列(3.2)jotm分布式事务源码分析</a>

<a href="http://my.oschina.net/pingpangkuangmo/blog/423210">分布式事务系列(4.1)atomikos的分布式案例</a>

对于我们这种初学者,可能会使用spring带给我们的@transactional,可能了解jta,可能会使用jotm、atomikos,又会遇到一些名词xa,支持xa的数据库驱动等等诸多问题,然后就会愈加混乱,自然形成一个疑问,庞大的事务体系的全貌到底是什么样?

下面就要具体列出一系列需要解决的问题

三种事务模型是什么?各自的特点是什么?各自的缺陷是什么?

spring自己的一系列接口设计:

platformtransactionmanager 事务管理器

transactiondefinition 事务定义

transactionstatus 事务状态

等等

上述一系列接口的实现是如何对非分布式和分布式事务的支持的呢?

x/open dtp模型是什么?几个重要的概念是什么?

xa规范是什么?

2pc是什么?

jta是什么?jts又是什么?

jta与上述的规范又是什么关系?

jta的接口都有哪些?分别是什么作用

jta接口中有一个javax.transaction.transactionmanager,如何理解它与上述的platformtransactionmanager呢?即它们各自的职责是什么?

分布式事务需要数据库和驱动程序支持的吗?还是使用一般的数据库和驱动程序也可以实现分布式事务?

xadatasource与datasource、xaconnection与connection等等接口

某些应用服务器没有实现jta,如tomcat,某些应用服务器实现了jta,如jboss,具体是怎么实现的呢?

jotm、atomikos又是怎么来实现jta的呢?需不需要数据库和驱动程序对xa的支持?

2pc对于初学者经常沦为一种概念,在代码中是如何体现的呢?如何模拟2pc呢?

先从非分布式事务开始,趁机理解spring对于事务的支持原理,然后过渡到分布式事务,理解分布式事务的概念,源码分析分布式事务框架jotm、atomikos,理解它们实现分布式事务的原理。

1 jdbc事务开发的缺点

2 spring实现的编程式事务原理

3 spring利用aop实现的声明式事务的接口设计与实现原理,为后面与jotm、atomikos的集成做铺垫

4 深刻理解了上面的例子后,再来看事务的三种模型,各自的特点、各自的缺陷

1 x/open dtp模型、xa规范、2pc

2 jta、jts概念

3 jta接口定义的理解

1 jotm的例子,以及源码分析实现分布式事务的原理(如何体现2pc的过程)

2 atomikos对非xadatasource和xadatasource的支持的例子,以及源码分析实现分布式事务的原理(如何体现2pc的过程)

3 jboss支持分布式事务的原理

我也是最近才开始接触下分布式事务,很多内容也都没弄清楚,有些地方难免第一次认识错误,还请批评指正。像我一样对整个事务体系不是很了解的同学可以一起来研究讨论,共同进步。