分布式事務

2021-10-19 15:20:47 字數 1089 閱讀 2354

將整個事務流程分為兩個階段,準備階段(prepare phase)、提交階段(commit phase)

1.準備階段(prepare phase):事務管理器(tm)給每個參與者傳送prepare訊息,每個資料庫參與者在本地執行事務,並寫本地的undo/redo日誌,此時事務沒有提交。(undo日誌是記錄修改前的資料,用於資料庫回滾,redo日誌是記錄修改後的資料,用於提交事務後寫入資料檔案)

2.提交階段(commit phase):如果事務管理器收到了參與者的執行失敗或者超時資訊時,直接給每個參與者傳送回滾(rollback)訊息,否則傳送提交(commit)訊息;參與者根據事務管理器的指令這行提交或者回滾操作,最後釋放事務處理過程中使用的鎖資源。

2pc的傳統方案是在資料庫層面實現的,如oracle、mysql都支援了2pc協議,為了統一標準,制定標準化的處理模型及介面標準,定義了分布式事務處理模型dtp(distributed transaction processing reference model)

dtp模型定義如下角色:

rm(resource manager):資源管理器,事務的參與者,一般情況下指乙個資料庫例項

tm(transaction manager):事務管理器

xa是tm與rm之間通訊的介面規範,簡單理解為資料庫提供的2pc介面協議,基於資料庫的xa協議來實現的2pc又稱為xa方案

互動方式:

ap通過tm提交及回滾事務

tm通過xa介面通知rm執行資料變更

三階段提交是二階段提交的改進版本

與二階段提交不同的是,三階段提交有兩個改動點:

三階段提交有cancommit、precommit、docommit三個階段

1. cancommit階段

tm進行事務詢問,向rm傳送commit請求,rm返回是否可以提交

2.precommit階段

tm根據參與者響應決定是否可以進行事務的precommit操作。有一下兩種情況:

相對於2pc, 3pc主要解決單點故障問題,並減少阻塞。但是,這種機制也會導致資料一致性問題,

分布式 分布式事務

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

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

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

分布式之分布式事務

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