分布式事務基本定義和過程 引用自MSDN

2021-08-25 01:50:11 字數 947 閱讀 9362

此文件對分布式事務,兩階段協議描述簡潔而完整,對於準確理解分布式事務的基本原理和過程很有幫助。

(引用自 msdn [url=分布式事務(資料庫引擎)[/url])

分布式事務(資料庫引擎)

分布式事務跨越兩個或多個稱為資源管理器的伺服器。稱為事務管理器的伺服器元件必須在資源管理器之間協調事務管理。如果分布式事務由 microsoft 分布式事務處理協調器 (ms dtc) 之類的事務管理器或其他支援 open group xa 分布式事務處理規範的事務管理器來協調,則在這樣的分布式事務中,每個 sql server 資料庫引擎例項都可以作為資源管理器來執行。有關詳細資訊,請參閱 ms dtc 文件。

跨越兩個或多個資料庫的單個資料庫引擎例項中的事務實際上是分布式事務。該例項對分布式事務進行內部管理;對於使用者而言,其操作就像本地事務一樣。

對於應用程式而言,管理分布式事務很像管理本地事務。當事務結束時,應用程式會請求提交或回滾事務。不同的是,分布式提交必須由事務管理器管理,以盡量避免出現因網路故障而導致事務由某些資源管理器成功提交,但由另一些資源管理器回滾的情況。通過分兩個階段(準備階段和提交階段)管理提交程序可避免這種情況,這稱為兩階段提交 (2pc)。

準備階段

當事務管理器收到提交請求時,它會向該事務涉及的所有資源管理器傳送準備命令。然後,每個資源管理器將盡力使該事務持久,並且所有儲存該事務日誌映像的緩衝區將被重新整理到磁碟中。當每個資源管理器完成準備階段時,它會向事務管理器返回準備成功或準備失敗的訊息。

提交階段

如果事務管理器從所有資源管理器收到準備成功的訊息,它將向每個資源管理器傳送乙個提交命令。然後,資源管理器就可以完成提交。如果所有資源管理器都報告提交成功,那麼事務管理器就會向應用程式傳送乙個成功通知。如果任一資源管理器報告準備失敗,那麼事務管理器將向每個資源管理器傳送乙個回滾命令,並向應用程式表明提交失敗。

資料庫引擎應用程式可以通過 transact-sql 或資料庫 api 來管理分布式事務。

Redis 分布式事務和分布式事務鎖

講分布式事務鎖前的幾個概念 絕大部分請求是純粹的記憶體操作 非常快速 避免了與硬碟的接觸 豐富的特性 可用於快取,訊息,按key設定過期時間,過期後將會自動刪除 使用大量的hash思想的k v鍵值對,獲取效率為o 1 依靠非阻塞的io多路復用原則,使redis形成單執行緒去執行命令的伺服器,避免了不...

分布式技術之分布式ID和分布式事務

mycat不支援只能使用在sharding jdbc中 public class mysharding implements preciseshardingalgorithm spring.shardingsphere.sharding.tables.t order.actual data node...

本地事務和分布式事務

1 本地事務acid 和 cap中的ca區別 本地事務 a 原子性 乙個事務中所有操作,要不全部完成,要不全部不完成,事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務沒有被執行過一樣。c 一致性 事務的一致性指在乙個事務執行之前和執行之後資料庫都必須處於一致性狀態,如果事務成功完成...