天天看點

分布式事務(第04篇)分布式事務解決方法-3PC

一 什麼三階段送出協定(3PC)

3PC是2PC的改進版本。主要有以下改進:

  • 增加了一個詢問階段,詢問階段可以確定盡可能早的發現無法執行操作而需要中止的行為,但是它并不能發現所有的這種行為,隻會減少這種情況的發生。
  • 增加了等待逾時的處理邏輯,如果在詢問階段等待逾時,則自動中止;如果在準備階段之後等待逾時,則自動送出。這也是根據機率統計上的正确性最大。

二 3PC工作流程

  1. 詢問階段:協調者詢問參與者是否可以完成指令,協調者隻需要回答是還是不是,而不需要做真正的操作,這個階段參與者在等待逾時後會自動中止。
  2. 準備階段:如果在詢問階段所有的參與者都傳回可以執行操作,協調者向參與者發送預執行請求,然後參與者寫 redo 和 undo 日志,鎖定資源,執行操作,但是不送出操作;如果在詢問階段任何參與者傳回不能執行操作的結果,則協調者向參與者發送中止請求,這裡的邏輯與兩階段送出協定的的準備階段是相似的,這個階段參與者在等待逾時後會自動送出。
  3. 送出階段:如果每個參與者在準備階段傳回準備成功,也就是預留資源和執行操作成功,協調者向參與者發起送出指令,參與者送出資源變更的事務,釋放鎖定的資源;如果任何一個參與者傳回準備失敗,也就是預留資源或者執行操作失敗,協調者向參與者發起中止指令,參與者取消已經變更的事務,執行 undo 日志,釋放鎖定的資源,這裡的邏輯與兩階段送出協定的送出階段一緻。

圖例:

分布式事務(第04篇)分布式事務解決方法-3PC

三 3PC并不是優于2PC

3PC優點:

  • 詢問階段可以確定盡可能早的發現無法執行操作而需要中止的行為。
  • 避免了資源被無限鎖定的情況。

3PC缺點:

  • 增加了系統的複雜度,增加了參與者和協調者之間的通信次數。

四 3PC具體的實作架構

我也沒找到......找到再補充吧

一 什麼三階段送出協定(3PC)

3PC是2PC的改進版本。主要有以下改進:

  • 增加了一個詢問階段,詢問階段可以確定盡可能早的發現無法執行操作而需要中止的行為,但是它并不能發現所有的這種行為,隻會減少這種情況的發生。
  • 增加了等待逾時的處理邏輯,如果在詢問階段等待逾時,則自動中止;如果在準備階段之後等待逾時,則自動送出。這也是根據機率統計上的正确性最大。

二 3PC工作流程

  1. 詢問階段:協調者詢問參與者是否可以完成指令,協調者隻需要回答是還是不是,而不需要做真正的操作,這個階段參與者在等待逾時後會自動中止。
  2. 準備階段:如果在詢問階段所有的參與者都傳回可以執行操作,協調者向參與者發送預執行請求,然後參與者寫 redo 和 undo 日志,鎖定資源,執行操作,但是不送出操作;如果在詢問階段任何參與者傳回不能執行操作的結果,則協調者向參與者發送中止請求,這裡的邏輯與兩階段送出協定的的準備階段是相似的,這個階段參與者在等待逾時後會自動送出。
  3. 送出階段:如果每個參與者在準備階段傳回準備成功,也就是預留資源和執行操作成功,協調者向參與者發起送出指令,參與者送出資源變更的事務,釋放鎖定的資源;如果任何一個參與者傳回準備失敗,也就是預留資源或者執行操作失敗,協調者向參與者發起中止指令,參與者取消已經變更的事務,執行 undo 日志,釋放鎖定的資源,這裡的邏輯與兩階段送出協定的送出階段一緻。

圖例:

分布式事務(第04篇)分布式事務解決方法-3PC

三 3PC并不是優于2PC

  • 詢問階段可以確定盡可能早的發現無法執行操作而需要中止的行為。
  • 避免了資源被無限鎖定的情況。
  • 增加了系統的複雜度,增加了參與者和協調者之間的通信次數。

四 3PC具體的實作架構

繼續閱讀