日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

一致性算法- Paxos

發布時間:2025/3/21 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一致性算法- Paxos 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一致性算法- Paxos

Paxos是一種基于消息傳遞的分布式一致性算法,由Leslie Lamport(萊斯利·蘭伯特)于1990提出。是目前公認的解決分布式一致性問題的最有效算法之一。

Paxos 是什么

Paxos協議是一個解決分布式系統中,多個節點之間就某個值(提案)達成一致(決議)的通信協議。它能夠處理在少數節點離線的情況下,剩余的多數節點仍然能達成一致。

概念定義

Proposal:為了就某一個值達成一致而發起的提案,包括提案編號和提案的值。

涉及角色如下:
  
  Proposer:提案發起者,為了就某一個值達成一致,Proposer可以以任意速度、發起任意數量的提案,可以停止或重啟。
  
  Acceptor:提案批準者,負責處理接收到的提案,響應、作出承諾、或批準提案。
  
  Learner:提案學習者,可以從Acceptor處獲取已被批準的提案。

Paxos 協議

Paxos需要遵循如下約定:

  • 一個Acceptor必須批準它收到的第一個提案。

  • 如果編號為n的提案被批準了,那么所有編號大于n的提案,其值必須與編號為n的提案的值相同。

  • Paxos 協議是一個兩階段協議,分為Prepare 階段 和 Accept階段。

    Prepare 階段

    Proposer 發送 Prepare

    Proposer 生成一個全局唯一且遞增的提案ID,向 Acceptor 發送請求,只攜帶提案ID即可。

    Acceptor 應答 Prepare

    Acceptor 接收到提案請求后,如下情況會收到應答

    • 當前提交的編號大于之前的其他機器 Prepare 的編號,

    • 當前是第一個提交 Prepare 的機器

    Accept 階段

    Proposer 發送 Accept

    如果Proposer收到半數以上Acceptor對其發出的編號為N的Prepare請求的響應,那么它就會發送一個針對[N,V]提案的Accept請求給半數以上的Acceptor。注意:V就是收到的響應中編號最大的提案的value,如果響應中不包含任何提案,那么V就由Proposer自己決定。

    Acceptor 應答 Accept

    如果Acceptor收到一個針對編號為N的提案的Accept請求,只要該Acceptor沒有對編號大于N的Prepare請求做出過響應,它就接受該提案。

    Learner

      一旦Acceptor批準了某個提案,即將該提案發給所有的Learner。為了避免大量通信,Acceptor也可以將批準的提案,發給主Learner,由主Learner分發給其他Learner。考慮到主Learner單點問題,也可以考慮Acceptor將批準的提案,發給主Learner組,由主Learner組分發給其他Learner。

    Paxos 算法演示

    死循環問題

      如果Proposer1提出編號為n1的提案,并完成了階段一。與此同時Proposer2提出了編號為n2的提案,n2>n1,同樣也完成了階段一。于是Acceptor承諾不再批準編號小于n2的提案,當Proposer1進入階段二時,將會被忽略。同理,此時,Proposer1可以提出編號為n3的提案,n3>n2,又會導致Proposer2的編號為n2的提案進入階段二時被忽略。以此類推,將進入死循環。

      解決辦法

      可以選擇一個Proposer作為主Proposer,并約定只有主Proposer才可以提出提案。因此,只要主Proposer可以與過半的Acceptor保持通信,那么但凡主Proposer提出的編號更高的提案,均會被批準。

    總結

    以上是生活随笔為你收集整理的一致性算法- Paxos的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。