天天看點

分布式事務系列(開篇)提出疑問和研究過程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支援分布式事務的原理

我也是最近才開始接觸下分布式事務,很多内容也都沒弄清楚,有些地方難免第一次認識錯誤,還請批評指正。像我一樣對整個事務體系不是很了解的同學可以一起來研究讨論,共同進步。