1. 程式人生 > >分布式筆記(二)一致性協議

分布式筆記(二)一致性協議

分析 text 如何 更多 區別 accept 進行 當前 分布式系統

一致性協議

一、2PC與3PC

請自行回憶2PC與3PC的過程,及在正式提交階段的處理單點問題的區別。分析各自的優缺點。

二、Paxos算法

一)Paxos算法解決的問題:分布式系統中如何對一個問題達成共識。

二)從提案到表決流程涉及到的角色:

1.提案者(Propser):負責提出議案,可能有多個。

2.接受者(Accpter):對指定的提案進行表決,一定有多個。

3.學習者(Learner):收集接受者對提案的表決,根據少數服從多數原則,形成最終提案表決。

三)Paxos算法描述

  • 第一階段(Prepare階段)

Proposer:

    • 選取提案編號n,並向大多數Acceptor發送攜帶編號n的prepare請求。

Acceptor:

    • 如果收到的提案編號n比自己已經收到的編號都要大,則向Proposer承諾不再接收編號小於n的提案,如果之前接受過提案,則同時將接受的提案中編號最大的提案及其編號發給Proposer。
    • 如果收到的提案編號n小於自己已經收到提案編號的最大值,則拒絕。
  • 第二階段(Accept階段)

Proposer:

    • 首先,對接收到響應,逐條處理:
      • 如果接收到拒絕,則暫不處理。
      • 如果接收到同意,同時還接收到Acceptor已經接受的提案,則記下該提案及編號。
    • 處理完響應後,統計拒絕和同意個數:
      • 如果大多數拒絕,則準備下次提案。
      • 如果大多數同意,從這些Acceptor已經接受的提案中選取提案編號最大的提案作為自己的提案,沒有則使用自己的提案,逐個向Acceptor發送Accept消息。

Acceptor:

    • 如果收到的提案編號n小於自己已經收到最大提案編號,則拒絕。
    • 如果收到的提案編號n等於自己已經收到最大提案編號,則接受該提案。
    • 如果收到的提案編號n大於自己已經收到最大提案編號,則拒絕。
  • 形成共識(與Prepare&Accept階段並行)

Acceptor:

    • 每當接受一個提案,則將該提案及編號發給Learner。

Learner:

    • 記錄每一個Acceptor當前接受的提案,一個Acceptor先後發來多個提案,則保留編號最大的提案。
    • 統計每個提案被接受的Acceptor個數,如果超過半數,則形成共識。

更多:https://www.zhihu.com/question/19787937

分布式筆記(二)一致性協議