天天看點

分布式事務解決方案2pc

為解決分布式系統的資料一緻性問題出現了兩階段送出協定,兩階段送出由 協調者和參與者組成,共經過兩個階段和三個操作,部分關系資料庫如Oracle、MySQL支援兩階段送出協定,這裡講解關系資料庫兩階段送出協定。

2PC協定流程圖:

分布式事務解決方案2pc

1)第一階段:準備階段(prepare)

協調者通知參與者準備送出訂單,參與者開始投票。

協調者完成準備工作向協調者回應Yes。

2)第二階段:送出(commit)/復原(rollback)階段

協調者根據參與者的投票結果發起最終的送出指令。

如果有參與者沒有準備好則發起復原指令。

一個下單減庫存的例子:

分布式事務解決方案2pc

1、應用程式連接配接兩個資料源。

2、應用程式通過事務協調器向兩個庫發起prepare,兩個資料庫收到消息分别執行本地事務(記錄日志),但不提

交,如果執行成功則回複yes,否則回複no。

3、事務協調器收到回複,隻要有一方回複no則分别向參與者發起復原事務,參與者開始復原事務。

4、事務協調器收到回複,全部回複yes,此時向參與者發起送出事務。如果參與者有一方送出事務失敗則由事務協

調器發起復原事務。

2PC的優點:實作強一緻性,部分關系資料庫支援(Oracle、MySQL等)。

缺點:整個事務的執行需要由協調者在多個節點之間去協調,增加了事務的執行時間,性能低下。

繼續閱讀