分布式事物中二段提交協議 三段提交協議理解

2021-08-29 23:52:22 字數 1436 閱讀 5740

1、二段提交協議

2pc,以下圖為理解基礎:

提交事務階段------投票階段

協調者發起事務請求到所有的參與者,參與者接收到事務請求後判斷自身情況,如果不能執行事務,則反饋不能提交事務,返回no,如果可以就執行事務,並將undo和redo資訊記錄事務日誌中,反饋yes

執行事務階段

協調者收到所有參與者反饋yes就發布commit命令,否則如果超時未收到或者收到no 那麼發布回滾命令。

參與者收到commit的請求後正式提交事務操作,提交後釋放資源。完成事務後向協調者傳送ack訊息  協調者收到所有參與者的ack後完成事務。

參與者收到rollback的請求查詢undo記錄,完成回滾後釋放資源。完成事務後向協調者傳送ack訊息  協調者收到所有參與者的ack後中斷事務。

優點:原理簡單,實現方便

缺點:同步阻塞,單點問題,腦裂問題,太過保守--超時機制,資料不一致---第二階段部分事務提交。

2、三階段提交協議

3pc  首先理解3p請結合下圖進行理解:

第一階段

cancommit

1、協調者向所有參與者發布包含事務內容的cancommit命令,等待參與者回應。

2、參與者認為自身能執行,則返回yes。否則返回no

第二階段

precommit階段

1、如果協調者收到的反饋都是yes,那麼發出precommit命令,進入prepared階段,參與者收到precommit命令後,執行事務操作。並寫入undo和redo資訊到事務日誌中。然後想協調者反饋ack相應

2、如果協調者收到的返回時no,那麼發布abort命令。各參與者收到abort或者超時,都中斷事務。

第三階段,

docommit階段

如果協調者收到所有參與者的ack相應,那麼會發出docommit命令,所有參與者收到docommit命令就提交事務,然後釋放資源。向協調者發出ack。協調者收到所有參與者的ack詳細後完成事務。

如果協調者收到no反饋或者超時響應後,將對所有的參與者發出abort請求。各個參與者收到abort請求後會利用undo資訊回滾事務。,然後釋放資源,反饋ack。協調者收到所有ack訊息後,中斷事務。

需要注意的是,在第三階段如果參與者沒有收到docommit命令,那麼超時後它會提交事務,畢竟第一階段所有的參與者都響應了,預設他們都能正常工作。

優缺點:

優點:即第三階段的超時提交。降低了參與者的阻塞範圍,並且能夠再出現單點故障後繼續達成一致。

二段提交協議 三段提交協議

1 二段提交協議 2pc提交事務階段 投票階段 協調者發起事務請求到所有的參與者,參與者接收到事務請求後判斷自身情況,如果不能執行事務,則反饋不能提交事務,返回no,如果可以就執行事務,並將undo和redo資訊記錄事務日誌中,反饋yes 執行事務階段 協調者收到所有參與者反饋yes就發布commi...

二段提交協議與三段提交協議

第一階段 準備階段 協調者向參與者發起指令,參與者評估自己的狀態,如果參與者評估指令可以完成,則會寫redo或者undo日誌,讓後鎖定資源,執行操作,但並不提交。第二階段 如果每個參與者明確返回準備成功,則協調者向參與者傳送提交指令,參與者釋放鎖定的資源,如何任何乙個參與者明確返回準備失敗,則協調者...

分布式事務 二階段提交與三階段提交

一 二階段提交演算法描述 在分布式系統中,事務往往包含有多個參與者的活動,單個參與者上的活動是能夠保證原子性的,而多個參與者之間原子性的保證則需要通過兩階段提交來實現,兩階段提交是分布式事務實現的關鍵。很明顯,兩階段提交保證了分布式事務的原子性,這些子事務要麼都做,要麼都不做。而資料庫的一致性是由資...