分布式系統各個節點都在各自執行自己的事務操作,無法直接獲取其他節點執行結果。為保證acid特性,就需引入乙個協調者統一排程分布式節點的執行邏輯。被排程的節點稱為參與者。
一、兩階段提交協議:
階段一:投票
協調者------->參與者傳送事務內容,尋味是否可執行事務提交操作
協調者<-------參與者執行事務,並返回事務執行結果(成功or失敗) ,並將redo、undo資訊記錄日誌
階段二:執行
協調者根據參與者事務執行返回結果情況,來決定最終是否進行事務提交操作。
1、執行事務提交
傳送commit請求給參與者,參與者提交事務,返回ack,協調者接收ack,完成事務
2、不執行,中斷事務
傳送rollback請求給參與者,參與者利用記錄的undo資訊執行事務回滾,完成回滾後傳送ack到協調者,協調者接收,完成事務中斷。
對每個事務都採用先嘗試後提交的方式。
優點:1、原理簡單,實現方便
缺點:1、同步阻塞:二階段提交過程中,所有參與者的事務執行都處於阻塞狀態,等待響應過程中無法進行其他任何操作
2、協調者單點問題
3、資料不一致:在協調者傳送commit請求後,如果發生網路故障,只有部分參與者收到commit請求,則導致分布式系統**現資料不一致問題。太過保守
二、三階段提交協議:
將二階段兩步走
階段一:詢問cancommit
協調者------->參與者傳送包含事務內容的cancommit請求
協調者<-------參與者判斷自身是否可以順利執行事務,ok則返回yes,反之。
階段二:預提交precommit
協調者根據返回結果情況判斷是否進行預提交操作(假如任一參與者返回no,或等待超時,就進行事務中斷。)。
1、執行事務預提交
協調者------->參與者傳送precommit請求,參與者接收,執行事務操作,記錄undo、redo到事務日誌
參與者執行成功---返回ack,並等待commit或abort終止命令。
階段三:執行提交docommit
協調者接收了所有參與者執行完成precommit並返回的ack,則傳送docommit請求,參與者執行,完成之後,再次返回ack訊息。協調者接收到所有的ack後,完成事務。
如果有任一參與者返回no response,則傳送abort中斷指令。
優點:相較於2pc,最大的優點就是降低了參與者阻塞範圍。
缺點:並未解決2pc中網路故障導致的資料不一致問題。
三、paxos演算法《待解》:
一種基於訊息傳遞的高容錯一致性演算法。「拜占庭帝國將軍問題」
引入「過半」理念,支援分布式節點間角色輪換,避免分布式單點問題。
分布式系統理論(二) 一致性協議Paxos
分布式系統理論 二 一致性協議paxos 摘要 分布式系統理論第二章,此系列主要以理論為主。這四種角色中,proposer和acceptor比較重要,協議主要的互動邏輯都在這兩種角色中。paxos 第一階段 prepare client產生乙個值v,並告知proposer,我這裡產生了乙個待acce...
分布式服務架構學習 分布式一致性協議
國際開放標準組織定義dts 分布式事務處理模型 模型中包括四種角色 應用程式,事務管理器,資源管理器,通訊資源管理器。j2ee規範中定義了tx協議和xa協議。在j2ee中,關係型資料庫,jms服務即為資源管理器,ejb容器則為事務管理器。兩階段提交協議把分布式事務分為兩個階段 準備階段,提交階段。都...
分布式系統中的一致性協議
本文詳細介紹目前分布式系統中常見的一些一致性協議 兩階段提交協議,三階段提交協議,向量時鐘,rwn協議,paxos協議,raft協議。下面就乙個個詳細講解下。一.兩階段提交協議 2pc 兩階段提交協議,簡稱2pc,是比較常用的解決分布式事務問題的方式,要麼所有參與程序都提交事務,要麼都取消事務,即實...