【分佈式事務系列】提出疑問和研究過程

#0 系列目錄#java

對於咱們這種初學者,可能會使用Spring帶給咱們的@Transactional,可能瞭解JTA,可能會使用jotm、atomikos,又會遇到一些名詞XA,支持XA的數據庫驅動等等諸多問題,而後就會越發混亂,天然造成一個疑問,龐大的事務體系的全貌究竟是什麼樣?數據庫

#1 須要解決的疑惑# 下面就要具體列出一系列須要解決的問題。編程

##1.1 對於事務模型##tomcat

  • 三種事務模型是什麼?各自的特色是什麼?各自的缺陷是什麼?

##1.2 Spring對於事務模型的支持##服務器

  • Spring本身的一系列接口設計:框架

  • PlatformTransactionManager 事務管理器分佈式

  • TransactionDefinition 事務定義源碼分析

  • TransactionStatus 事務狀態atom

  • 等等.net

  • 上述一系列接口的實現是如何對非分佈式和分佈式事務的支持的呢?

##1.3 針對分佈式事務的規範##

  • X/Open DTP模型是什麼?幾個重要的概念是什麼?
  • XA規範是什麼?
  • 2PC是什麼?

##1.4 針對JTA##

  • JTA是什麼?JTS又是什麼?
  • JTA與上述的規範又是什麼關係?
  • JTA的接口都有哪些?分別是什麼做用
  • JTA接口中有一個javax.transaction.TransactionManager,如何理解它與上述的PlatformTransactionManager呢?即它們各自的職責是什麼?

##1.5 對於JTA實現##

  • 分佈式事務須要數據庫和驅動程序支持的嗎?仍是使用通常的數據庫和驅動程序也能夠實現分佈式事務?
  • XADataSource與DataSource、XAConnection與Connection等等接口
  • 某些應用服務器沒有實現JTA,如tomcat,某些應用服務器實現了JTA,如JBoss,具體是怎麼實現的呢?
  • jotm、atomikos又是怎麼來實現JTA的呢?需不須要數據庫和驅動程序對XA的支持?
  • 2PC對於初學者常常淪爲一種概念,在代碼中是如何體現的呢?如何模擬2PC呢?

#2 研究過程# 先從非分佈式事務開始,趁機理解Spring對於事務的支持原理,而後過渡到分佈式事務,理解分佈式事務的概念,源碼分析分佈式事務框架jotm、atomikos,理解它們實現分佈式事務的原理。

##2.1 非分佈式事務##

  1. jdbc事務開發的缺點
  2. Spring實現的編程式事務原理
  3. Spring利用AOP實現的聲明式事務的接口設計與實現原理,爲後面與jotm、atomikos的集成作鋪墊
  4. 深入理解了上面的例子後,再來看事務的三種模型,各自的特色、各自的缺陷

##2.2 分佈式事務的一系列概念##

  1. X/Open DTP模型、XA規範、2PC
  2. JTA、JTS概念
  3. JTA接口定義的理解

##2.3 JTA的實現##

  1. jotm的例子,以及源碼分析實現分佈式事務的原理(如何體現2PC的過程)
  2. atomikos對非XADataSource和XADataSource的支持的例子,以及源碼分析實現分佈式事務的原理(如何體現2PC的過程)
  3. JBoss支持分佈式事務的原理
相關文章
相關標籤/搜索