分布式事務

2021-10-03 15:19:55 字數 1190 閱讀 8090

資料庫事務(簡稱:事務)是資料庫管理系統執行過程中的乙個邏輯單位,由乙個有限的資料庫操作序列構成。通俗來說,事務就是作為單個邏輯單元執行的一組操作,要麼全成功,要麼全失敗。

事務共包含四個特性:

分布式事務是指事務的參與者、支援事務的伺服器、資源伺服器以及事務管理器分別位於不同的分布式系統的不同節點之上。本質上來說,分布式事務就是為了保證不同資料庫的資料一致性。

分布式事務用於在分布式系統中保證不同節點之間的資料一致性。分布式事務的實現有很多種,最具有代表性的是由oracle tuxedo系統提出的xa分布式事務協議。

xa協議包含兩階段提交(2pc)和三階段提交(3pc)兩種實現。

1、兩階段提交:

在xa分布式事務的第一階段,作為事務協調者的節點會首先向所有的參與者節點傳送prepare請求。

在接到prepare請求之後,每乙個參與者節點會各自執行與事務有關的資料更新,寫入undo log和redo log。如果參與者執行成功,暫時不提交事務,而是向事務協調節點返回「完成」訊息。

當事務協調者接到了所有參與者的返回訊息,整個分布式事務將會進入第二階段。

在xa分布式事務的第二階段,如果事務協調節點在之前所收到都是正向返回,那麼它將會向所有事務參與者發出commit請求。

接到commit請求之後,事務參與者節點會各自進行本地的事務提交,並釋放鎖資源。當本地事務完成提交後,將會向事務協調者返回「完成」訊息。

當事務協調者接收到所有事務參與者的「完成」反饋,整個分布式事務完成。

2、三階段提交(3pc)

xa三階段提交在兩階段提交的基礎上增加了cancommit階段,並且引入了超時機制。一旦事物參與者遲遲沒有接到協調者的commit請求,會自動進行本地commit。這樣有效解決了協調者單點故障的問題。但是效能問題和不一致的問題仍然沒有根本解決。

3、mq事務

利用訊息中介軟體來非同步完成事務的後一半更新,實現系統的最終一致性。這個方式避免了像xa協議那樣的效能問題。

4、tcc事務

tcc事務是try、commit、cancel三種指令的縮寫,其邏輯模式類似於xa兩階段提交,但是實現方式是在**層面來人為實現。

分布式 分布式事務

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

分布式事務 分布式事務的實現

如果在多個服務中需要對不同的資料庫進行操作。因為不同服務操作的資料庫都不同,所以保證在同乙個事務中完成操作顯然是不科學的。那實現分布式事務的思想 1 方法入口,建立一條日誌記錄,狀態定義為初始狀態,即儲存本條日誌記錄 可以儲存在資料庫中,也可以寫出到本地磁碟檔案 2 可以在非同步執行緒或在定時任務中...

分布式之分布式事務

被人問到分布式事務,之前學rabbitmq 的時候學到過rabbitmq 高階的事務,因為沒有用過,所有沒有回答好。這裡總結一下。1.單機版事務。事務的四大特性 acid a.原子性 b.一致性 c.隔離性 d.永續性 單機事務可以通過設定事務的隔離級別 參見spring 的事務隔離級別 2.分布式...