分布式系統架構(二) 一致性協議

2021-09-30 13:52:09 字數 1338 閱讀 7231

分布式系統各個節點都在各自執行自己的事務操作,無法直接獲取其他節點執行結果。為保證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,是比較常用的解決分布式事務問題的方式,要麼所有參與程序都提交事務,要麼都取消事務,即實...