电竞比分网-中国电竞赛事及体育赛事平台

分享

分布式事務原理

 知識存儲館 2016-08-24

本文是對分布式事務原理、規(guī)范的科普,主要圍繞兩階段提交協(xié)議展開。最后描述了在應用框架層面模擬兩階段提交協(xié)議的簡化設計。

1 事務/分布式事務

1.1 事務

事務是數(shù)據(jù)庫從一個穩(wěn)定狀態(tài)變遷到另一個穩(wěn)定狀態(tài)的保證,具備 ACID 這 4 個特性:

  • 原子性(Atomicity):一個事務中的所有操作,要么全部完成,要么全部不完成,不會結束在中間某個環(huán)節(jié)。事務在執(zhí)行過程中發(fā)生錯誤,會被回滾到事務開始前的狀態(tài)。
  • 一致性(Consistency):在事務開始之前和事務結束以后,數(shù)據(jù)庫的完整性限制沒有被破壞。
  • 隔離性(Isolation):兩個事務的執(zhí)行是互不干擾的,兩個事務時間不會互相影響。
  • 持久性(Durability):在事務完成以后,該事務對數(shù)據(jù)庫所作的更改便持久地保存在數(shù)據(jù)庫之中,并且是完全的。
例如應用程序需要更新多條相關數(shù)據(jù)時就需要進行事務處理。

1.2 分布式事務與 XA 規(guī)范

分布式事務是指會涉及到操作多個數(shù)據(jù)庫的事務,同樣必須保證 ACID。
其就是將對同一庫事務的概念擴大到了對多個庫的事務:對同一庫的 SQL 操作對應了分布式事務中對一個庫的事務。
X/Open XA 定義了分布式事務處理的規(guī)范,并由數(shù)據(jù)庫廠商在驅動層面進行實現(xiàn)。XA 規(guī)范的基礎是兩階段提交協(xié)議,并定義了分布式事務處理所涉及的角色:
  • 應用程序(AP)
  • 事務管理器(TM)
  • 資源管理器(RM)
  • 通信資源管理器(CRM)
可以這樣認為,事務管理器即事務處理中間件(分布式事務處理系統(tǒng));資源管理器即各個數(shù)據(jù)庫。

2 兩階段提交協(xié)議

兩階段提交協(xié)議(Two-phase commit protocol, 2PC)將一次分布式事務處理劃分為兩個階段:預提交階段(也稱為準備階段或投票階段),提交階段。

2.1 預提交階段

這是兩階段提交協(xié)議的第一個階段,分布式事務處理系統(tǒng)咨詢各個資源管理器是否可以提交本地事務,各個資源管理器會把這個咨詢過程寫入日志,以便進行回滾或提交。

 

當一個數(shù)據(jù)庫接收到咨詢后,它會將需要執(zhí)行的操作寫入日志,禁止其他寫入操作(鎖定資源)。

如果分布式事務中某數(shù)據(jù)庫預提交失敗或提交失敗,那該數(shù)據(jù)庫會根據(jù)日志進行自身的操作回滾,并解鎖。

2.2 提交階段

分布式事務處理系統(tǒng)對各個資源管理器下達提交/回滾的指令,使整個分布式事務結束。

 

當一個數(shù)據(jù)庫接受到提交/回滾指令時,它將根據(jù)第一階段的日志進行提交/回滾處理。

 

兩階段提交協(xié)議可以在數(shù)據(jù)庫層面通過驅動支持,也可以在應用框架中按照其原理進行設計實現(xiàn)。

3 分布式事務應用框架

使用數(shù)據(jù)庫驅動方式實現(xiàn)兩階段事務有兩個不足:

  • 隨著分布式事務的參與者增多,效率會明顯降低
  • 對應用開發(fā)者透明,調試不便
  • 必須依賴數(shù)據(jù)庫,不是所有數(shù)據(jù)庫都實現(xiàn)了 XA 規(guī)范

3.1 角色

  • 發(fā)起者:分布式事務發(fā)起者,需要提供回查恢復接口。
  • 參與者:參與到分布式事務的其他系統(tǒng),提供提交/回滾接口。這里的提交/回滾接口即是對數(shù)據(jù)庫數(shù)據(jù)的 SQL 操作。
  • 活動管理器:負責管理分布式事務(活動、操作)。
  • 定時器:觸發(fā)對分布式事務活動的撈取,以備回查恢復。

3.2 交互時序

兩階段提交時序:

兩階段提交時序
因為系統(tǒng)在上述交互中不是絕對可靠的,所以需要一定的方式進行事務狀態(tài)恢復,保證所有參與者最終一致。

回查恢復時序:

回查恢復時序

3.3 關鍵點

  • 參與者提供的提交/回滾接口必須滿足冪等性,即定時觸發(fā)重復調用提交/回滾時不會重復操作同一資源
  • 根據(jù)發(fā)起者生成 txId,回查恢復時根據(jù) txId 調用發(fā)起者回查恢復接口
  • 活動管理器與發(fā)起者同庫/不同庫時,事務活動、操作狀態(tài)變遷的不同處理
  • 事務內調用操作的順序
  • 定時任務定時間隔/重試次數(shù)

參考

---- EOF ----
歡迎加入開源技術 Q 群 13139268 B3log,讓學習和分享成為一種習慣! 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多