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