1. 程式人生 > >分散式事務一致性:三階段提交協議(3PC)

分散式事務一致性:三階段提交協議(3PC)

文章目錄

一、概念

三階段提交協議是兩階段提交協議的改進版本。它通過超時機制解決了阻塞的問題,並把兩個階段增加為以下三個階段。

  1. 詢問階段: 協調者詢問參與者是否可以完成指令,參與者只需要回答是或者不是。
  2. 準備階段: 如果詢問階段都返回是,那麼協調者會像所有參與者傳送預執行請求指令,然後參與者寫redo和undo日誌,執行操作但不提交。(與二階段提交的準備階段類似)
  3. 提交階段: 如果每個參與者在準備階段返回準備成功,則協調者向參與者發起提交指令,參與者提交事務,釋放資源。如果任何參與者返回準備失敗,則協調者發起中止指令,參與者執行undo日誌回滾。

二、和2PC對比

  • 與二階段提交協議相比優點:
    1. 增加了詢問階段,可以確保儘可能早的發現問題,比如無法執行操作,但是它並不能發現所有這種行為,只能減少。
    2. 在準備階段後,協調者和參與者執行的任務中,都增加了超時機制,一旦超時,則協調者和參與者都會繼續提交事務,預設為成功,這也是根據概率統計超時後為預設成功的正確性最大。
  • 三階段提交協議的缺點:
    1. 一旦超時,系統仍然會發生不一致。只不過這種情況很少見。
    2. 實現複雜,效能較差。

三、總結

在網際網路的高併發系統中,很少有會使用2PC和3PC的場景。