分布式事務簡介,通過組內分享學習到的知識,并進行討論。
主要內容
分布式事務簡介
分布式事務是指跨越多個數據庫或服務的一系列操作,這些數據庫或服務可能分布在網絡的不同節點上,它們共同組成一個完整的邏輯工作單元,必須滿足事務的ACID特性(Atomicity, Consistency, Isolation, Durability),即原子性、一致性、隔離性和持久性。
原子性:分布式事務中的所有操作作為一個整體,要么全部成功,要么全部失敗,不允許部分成功部分失敗。
一致性:事務完成后,無論事務內部包含多少步驟,都會確保系統從一個有效狀態轉換到另一個有效狀態,保持數據的完整性。
隔離性:即使多個分布式事務并發執行,每個事務的執行也不受其他事務的影響,如同在一個事務中一樣。
持久性:一旦事務完成提交,其對數據庫的修改將永久保存,即使發生系統故障也不會丟失。
分布式事務解決方案
在實際的分布式環境下,實現分布式事務面臨的主要挑戰是如何在多個參與事務的服務之間達成一致性的決策,尤其是在存在網絡延遲、部分系統失效的情況下。常見的分布式事務解決方案和技術包括:
-
兩階段提交 (2PC, Two-Phase Commit):一種經典的分布式事務協議,通過協調者和參與者之間的兩階段交互來決定事務是否提交。
-
三階段提交 (3PC, Three-Phase Commit):對2PC的改進,增加了一個預提交階段以減少阻塞時間并提高容錯能力。
-
補償事務TCC (Try-Confirm-Cancel):嘗試、確認、取消模型,通過業務代碼顯式控制事務的生命周期。
-
本地消息表:有一張存放本地消息的表。在執行業務的時候將業務的執行和將消息放入消息表中的操作放在同一個事務中。
-
事務消息:RocketMQ 支持事務消息,第一步先給 Broker 發送事務消息即半消息,半消息不是說一半消息,而是這個消息對消費者來說不可見,然后發送成功后發送方再執行本地事務。
-
基于分布式協調器的服務:如Seata提供了分布式事務的支持,采用不同的事務模型,簡化了分布式事務的管理
Seata基本介紹
Seata 是一款開源的分布式事務解決方案,為用戶提供了 AT、TCC、SAGA 和 XA 事務模式 事務協調者(TC):維護全局和分支事務的狀態,驅動全局事務提交或回滾。 事務管理器(TM):定義全局事務的范圍,開始全局事務、提交或回滾全局事務。 資源管理器(RM):管理分支事務處理的資源,與TC交談以注冊分支事務和報告分支事務的狀態,并驅動分支事務提交或回滾。
具體內容詳見截圖