分布式事務的簡單理解

2021-10-01 18:46:08 字數 2506 閱讀 2275

單獨的系統中,事務是本地事務。而在分布式系統中,乙個業務的完成需要及多個系統,需要涉及多個資料來源。比如訂單系統,下訂單這個業務需要涉及支付系統,庫存系統,物流系統等,假如庫存系統出現問題,事務回滾,那麼其他子系統的事務也必須回滾,否則就會出現事務不一致,導致下訂單操作出現錯誤。

多個資料來源,就需要多個connection物件,不能出現某個connection進行了提交,而某個connection進行了回滾,必須保持一致性。而lcn會協調n個connection物件,對應n個事務,保證事務要麼都提交,要麼都回滾。

1.若存在事務發起方參與方a參與方b。呼叫關係圖如下:

那麼正常執行業務的時序圖為:

若參與方b出現異常,那麼他們的業務時序圖為:

2.若他們的呼叫關係是這樣的情況:

正常執行業務的時序圖為:

此時發生參與方b出現異常時他們的時序圖為:

tx-lcn由兩大模組組成,txclient、txmanager

txmanager作為分布式事務的控制方,事務發起方或者參與方都由txclient端來控制。

核心步驟

1.建立事務組

在事務發起方(consumer)開始執行業務**之前先呼叫txmanager建立事務組物件。

2.加入事務組

參與方(庫存系統、物流系統等)在執行完業務方法以後,將該模組的事務資訊通知給txmanager。

3.通知事務組

在發起方執行完業務**以後,將發起方執行結果狀態通知給txmanager,txmanager將根據事務最終狀態和事務組的資訊來通知相應的參與模組提交或回滾事務,並返回結果給事務發起方。

舉例:我們在**購買商品,下訂單。下訂單這一操作需要涉及支付、庫存、物流等。下訂單這一操作作為事務發起方,支付、庫存、物流作為參與方。一開始先建立txmanager事務組,統一管理事務。訂單系統執行業務,呼叫對應參與方模組,參與方開始執行自己的業務,將事務資訊傳送給txmanager事務組(參與方還未提交事務)。等到所有參與方執行完畢,事務發起方會通知txmanager事務組,進行事務的提交(參與方未發生異常)或者回滾(某個參與方發生異常)。

lcn模式是通過**connection的方式實現對本地事務的操作,然後再由txmanager統一協調控制事務。當本地事務提交回滾或者關閉連線時將會執行假操作,該**的連線將由lcn連線池管理。

假操作:

a:connectionproxy

b:connection

大概理解:物流、庫存系統的connection(b)由lcn進行**(a),a可以執行b中的方法,當本地事務(物流系統的事務、庫存系統的事務)最後想提交或者回滾的時候,a會執行乙個假的操作,本地事務並沒有真正提交或者回滾,也就沒有進行close,connection物件並未關閉。**連線放在lcn連線池中,等到所有參與方執行完畢後,txmanger會從連線池獲取連線,對事務進行統一操作,提交或者回滾。

lcn通過連線池,延長了connection的生命週期。本來connection生命週期是到本地事務執行完畢,但是現在必須等到所有事務執行完畢。

提交:通知物流系統,事務提交,然後connection執行close方法,關閉連線,通知庫存系統,事務提交,然後connection執行close方法,關閉連線。

1.該模式對**的嵌入性低(耦合度低)。(本地事務不需要做改動,只需要加依賴註解),其他模式耦合度較高,本地事務**改動多。

2.該模式僅限於本地存在連線物件且可通過連線物件控制事務的模組。

3.該模式下的事務提交與回滾是由本地事務方控制,對於資料一致性上有較高的保障。(lcn起協調connection作用)

4.該模式缺陷在於**的連線需要隨事務發起方一起釋放連線,增加了連線占用的時間。(因為延長了connection生命週期)

對分布式事務的簡單理解

分布式事務就是把乙個包含多個操作步驟的業務操作 這些操作往往是由不同的應用系統來完成的 作為乙個整體來對待,要麼都成功,要麼都失敗。問題是各個操作步驟在不同的業務系統中進行操作,網路速度,系統故障等各種因素都有可能影響操作結果,必須採取有效方法來達到事務的目的。所謂的原子性就是說,在整個事務中的所有...

分布式事務的理解

當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋,以後有空詳細說,簡單的說就是原來的乙個資料庫變成了多個資料庫。這時候,如果乙個操作既訪問01庫,又訪問02庫,而且要保證資料的一致性,那麼就要用到分布式事務。所謂的soa化,就是業務的服務化。比如原來單機...

分布式 分布式事務

是資料庫執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。事務的acid四大特性 原子性 atomicity 事務作為乙個整體被執行。一致性 consistency 從乙個一致的狀態轉換到另乙個一致的狀態。隔離性 isolation 多個事務併發執行時,併發事務之間互相影響的程度。永續性 d...