面試官:談談分散式一致性機制,我一臉懵逼。。

提交事務請求(投票階段)協調者向參與者傳送事務內容,詢問是否可以執行事務提交操作,等待響應

參與者執行事務操作,並將undo和redo日誌記錄參與者回覆協調者,執行成功則回Yes否則No

執行事務提交(執行階段)

如果都是參與者都回復Yes,則協調者向參與者傳送提交請求,否則傳送回滾請求

參與者根據協調者的請求執行事務提交或回滾,並向協調者傳送Ack訊息

協調者收到所有的Ack訊息過後判斷事務的完成或者中斷

事務詢問(canCommit)

協調者向參與者傳送一個包含事務內容的詢問請求,詢問是否可以執行事務並等待

參與者根據自己狀態判斷並回復yes、no

執行事務預提交(preCommit)

若協調者收到全是yes,就傳送preCommit請求否則釋出abort請求

參與者若收到preCommit則執行事務操作並記錄undo和redo然後傳送Ack,若收到abort或者超時則中斷事務

執行事務提交(doCommit)

協調者收到所有的Ack則傳送doCommit請求,若收到了No或者超時則傳送abort請求

參與者收到doCommit就執行提交併傳送ACk,否則執行回滾併發送Ack

協調者收到Ack判斷是完成事務還是中斷事務

面試官:談談分散式一致性機制,我一臉懵逼。。

Prepare階段

Proposer選擇一個提案編號M,向Acceptor某個超過半數的子整合員傳送該編號的Prepare請求

Acceptor收到M編號的請求時,若M大於該Acceptor已經響應的所有Prepare請求的編號中的最大編號N,那麼他就將N反饋給Proposer,同時承諾不會再批准任何編號小於M的提案

Accept階段

如果Proposer收到超過半數的Acceptor對於M的prepare請求的響應,就傳送一個針對[M,V]提案的Accept請求給Acceptor,其中V是收到的響應編號中編號的最大的提案值,如果響應中不包括任何提案值,那麼他就是任意值

Acceptor收到這個針對[M,V]的Accept請求只要改Acceptor尚未對大於M編號的提案做出過響應,他就透過這個提案

Learn階段(本階段不屬於選定提案的過程)

Proposer將透過的提案同步到所有的Learner

面試官:談談分散式一致性機制,我一臉懵逼。。

它贏得選舉;

另一個節點成為Leader;

一段時間沒有節點成為Leader。

面試官:談談分散式一致性機制,我一臉懵逼。。

Vr Vw V

Vw V/2

面試官:談談分散式一致性機制,我一臉懵逼。。