事务介绍
什么是事務
數據庫事務(簡稱:事務,Transaction)是指數據庫執行過程中的一個邏輯單位,由一個有限的數據庫操作序列構成[由當前業務邏輯多個不同操作構成]。
本地事務
起初,事務僅限于對單一數據庫資源的訪問控制,架構服務化以后,事務的概念延伸到了服務中。倘若將一個單一的服務操作作為一個事務,那么整個服務操作只能涉及一個單一的數據庫資源,這類基于單個服務單一數據庫資源訪問的事務,被稱為本地事務(Local Transaction)。
什么是分布式事務
分布式事務指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位于不同的分布式系統的不同節點之上,且屬于不同的應用,分布式事務需要保證這些操作要么全部成功,要么全部失敗。本質上來說,分布式事務就是為了保證不同數據庫的數據一致性。
分布式事務應用架構
本地事務主要限制在單個會話內,不涉及多個數據庫資源。但是在基于SOA(Service-Oriented Architecture,面向服務架構)的分布式應用環境下,越來越多的應用要求對多個數據庫資源,多個服務的訪問都能納入到同一個事務當中,分布式事務應運而生。
單一服務分布式事務
最早的分布式事務應用架構很簡單,不涉及服務間的訪問調用,僅僅是服務內操作涉及到對多個數據庫資源的訪問。
多服務分布式事務
當一個服務操作訪問不同的數據庫資源,又希望對它們的訪問具有事務特性時,就需要采用分布式事務來協調所有的事務參與者。
對于上面介紹的分布式事務應用架構,盡管一個服務操作會訪問多個數據庫資源,但是畢竟整個事務還是控制在單一服務的內部。如果一個服務操作需要調用另外一個服務,這時的事務就需要跨越多個服務了。在這種情況下,起始于某個服務的事務在調用另外一個服務的時候,需要以某種機制流轉到另外一個服務,從而使被調用的服務訪問的資源也自動加入到該事務當中來。下圖反映了這樣一個跨越多個服務的分布式事務:
多服務多數據源分布式事務
如果將上面這兩種場景(一個服務可以調用多個數據庫資源,也可以調用其他服務)結合在一起,對此進行延伸,整個分布式事務的參與者將會組成如下圖所示的樹形拓撲結構。在一個跨服務的分布式事務中,事務的發起者和提交均系同一個,它可以是整個調用的客戶端,也可以是客戶端最先調用的那個服務。
較之基于單一數據庫資源訪問的本地事務,分布式事務的應用架構更為復雜。在不同的分布式應用架構下,實現一個分布式事務要考慮的問題并不完全一樣,比如對多資源的協調、事務的跨服務傳播等,實現機制也是復雜多變。
事務的作用: 保證每個事務的數據一致性。
?
總結