「分佈式事務」系列[共5篇]

 

[第1篇] SOA須要怎樣的事務控制方式

在一個基於SOA架構的分佈式系統體系中,服務(Service)成爲了基本的功能提供單元,不管與業務流程無關的基礎功能,仍是具體的業務邏輯,均實如今相應的服務之中。服務對外提供統一的接口,服務之間採用標準的通訊方式進行交互,各個單一的服務精又有效的組合、編排成爲一個有機的總體。在這樣一個分佈式系統中某個活動(Activity)的實現每每須要跨越單個服務的邊界,如何協調多個服務之間的關係使之爲活動功能的實現服務,涉及到SOA一個重要的課題:服務協做(Service Coordination)。而具體來說,一個分佈式的活動可能會執行幾秒鐘,好比銀行轉賬;也可能執行幾分鐘、幾個小時、幾天甚至更長,好比移民局處理移民的申請。事務,無疑是屬於短暫運行服務協做(Short-Running Service Coordination)的範疇。html

[第2篇] 基於DTC的分佈式事務管理模型之事務控制角色

經過上一篇的介紹,咱們知道了SOA真正須要的是一個可以協調服務操做直接(經過服務自身訪問的資源)或者間接(經過被調用服務訪問的資源)訪問的全部資源的分佈式事務管理系統,這是一個複雜的架構體系。WCF,做爲Windows平臺下基於SOA的分佈式框架,對分佈式事務提供全面的支持。不過,WCF並非另起爐竈,而是充分地利用了Windows現有的事務控制基礎架構。本節着重討論Windows事務處理模型,首先來看看在這個模型中各個事務參與者各自扮演怎樣的角色。數據庫

[第3篇]基於DTC的分佈式事務管理模型之事務登記於基於2PC的事務提交

當基於LTM或者KTM的事務提高到基於DTC的分佈式事務後,DTC成爲了本機全部事務型資源管理器的管理者;此外,當一個事務型操做超出了本機的範圍,出現了跨機器的調用後,本機的DTC須要於被調用者所在機器的DTC進行協助。上級對下級(包括本機DTC對本機全部資源管理器,以及上下級 DTC)的管理得前提是下級在上級那裏登記,即事務登記(Transaction Enlist)。全部事務參與者,包括全部資源管理器和事務管理器(即DTC)在進行了事務等級完成以後造成了一個樹形的層級結構,該結構的造成是後續的事務提供成爲可能,所以咱們將其稱之爲事務提交樹(Transaction Commit Tree)。編程

不一樣於基於單一資源管理器的本地事務,在一個分佈式環境中時實現一個涉及到多個資源管理器的分佈式事務,實現事務的ACID四大屬性,要麻煩得多。當事務初始化服務(應用或者組件,爲了更佳貼近WCF,咱們都稱服務)完成全部相關的操做,決定提交該事務。對於分佈式事務的提交,最終的結果有兩個:若是全部的操做可以順利完成,須要持久化的數據被相應的資源管理器寫入到目標資源;若是任何一個環節失敗,全部持久化資源管理器將數據恢復到原來的狀態。分佈式事務的整個提交過程,採用兩階段提交(2PC:Two-Phase)Commit協議完成。顧名思義,「兩階段提交」意味整個整個事務提交階段分兩個階段,咱們如今就來詳細介紹分別在這兩個階段中,都在作些什麼。架構

[第4篇]System.Transactions事務之事務(Transaction)和可提交事務(CommittableTransaction)

在.NET 1.x中,咱們基本是經過ADO.NET實現對不一樣數據庫訪問的事務。.NET 2.0爲了帶來了全新的事務編程模式,因爲全部事務組件或者類型均定義在System.Transactions程序集中的System.Transactions命名空間下,咱們直接稱基於此的事務爲System.Transactions事務。System.Transactions事務編程模型使咱們能夠顯式(經過System.Transactions.Transaction)或者隱式(基於System.Transactions.TransactionScope)的方式進行事務編程。框架

在System.Transactions事務體系下,事務自己經過類型System.Transactions.Transaction類型表示。只有可提交事務才能被直接初始化,對可提交事務的提交驅動着對整個分佈式事務的提交。可提交事務經過CommittableTransaction類型表示。異步

[第5篇]System.Transactions事務之依賴事務(DependentTransaction)和事務範圍(TransactionScope)

Transaction的定義中,信息的讀者應該看到了一個叫作DepedentClone的方法。該方法對用於建立基於現有Transaction對象的「依賴事務(DependentTransaction)」。不像可提交事務是一個獨立的事務對象,依賴事務依附於現有的某個事務(多是可提交事務,也多是依賴事務)。依賴事務能夠幫助咱們很容易地編寫一些事務型操做,當環境事務不存的時候,能夠確保操做在一個獨立的事務中執行;當環境事務存在的時候,則自動加入其中。分佈式

TransactionScope確實可以使咱們的事務控制變得很是的簡單。實際上,在利用System.Transactions事務進行編程的時候,咱們通常不會使用到可提交事務,對於依賴事務也只有在異步調用的時候會使用到,基於TransactionScope的事務編程方式纔是咱們推薦的。 正如其名稱所表現的同樣,TransactionScope就是爲一組事務型操做建立一個執行範圍,而這個範圍始於TransactionScope建立之時,結束於TransactionScope被回收(調用Dispose方法)。ide

相關文章
相關標籤/搜索