分散式事務一致性:三階段提交協議(3PC)
阿新 • • 發佈:2018-12-29
文章目錄
一、概念
三階段提交協議是兩階段提交協議的改進版本。它通過超時機制解決了阻塞的問題,並把兩個階段增加為以下三個階段。
- 詢問階段: 協調者詢問參與者是否可以完成指令,參與者只需要回答是或者不是。
- 準備階段: 如果詢問階段都返回是,那麼協調者會像所有參與者傳送預執行請求指令,然後參與者寫redo和undo日誌,執行操作但不提交。(與二階段提交的準備階段類似)
- 提交階段: 如果每個參與者在準備階段返回準備成功,則協調者向參與者發起提交指令,參與者提交事務,釋放資源。如果任何參與者返回準備失敗,則協調者發起中止指令,參與者執行undo日誌回滾。
二、和2PC對比
- 與二階段提交協議相比優點:
- 增加了詢問階段,可以確保儘可能早的發現問題,比如無法執行操作,但是它並不能發現所有這種行為,只能減少。
- 在準備階段後,協調者和參與者執行的任務中,都增加了超時機制,一旦超時,則協調者和參與者都會繼續提交事務,預設為成功,這也是根據概率統計超時後為預設成功的正確性最大。
- 三階段提交協議的缺點:
- 一旦超時,系統仍然會發生不一致。只不過這種情況很少見。
- 實現複雜,效能較差。
三、總結
在網際網路的高併發系統中,很少有會使用2PC和3PC的場景。