分布式算法-Paxos

分布式算法-Paxos,第1张

分布式算法-Paxos

Paxos算法
    • Paxos算法

Paxos算法

成效:快速正确的在分布式系统中对某个数据值达成一致,不论发生任何异常都不会破坏整个系统的一致性

Paxos系统中将节点分为Proposer(提议者),Acceptor(接受者),learner(学习者),每个节点可以身兼多个身份

完整的Paxos算法流程分为三个阶段:

Prepare准备阶段:

Proposer向多个Acceptor发出Propose请求Promise(承诺)

Acceptor针对收到的Propose请求进行Promise承诺

Accept接受阶段:

Proposer收到多数Acceptor承诺的Promise后,向Acceptor发出Propose请求

Acceptor针对收到的Propose请求进行Accept处理

Learn学习阶段:

Proposer将形成的Propose发送给所有的learners

具体流程

  1. Prepare:Proposer生成全局唯一且递增ProposalID,向所有Acceptor发送Propose请求(无需携带提案内容,带Proposal ID)

  2. Promise:Acceptor收到Propose请求后,做出“两个承诺,一个应答”

    1. 不接受Proposal ID小于等于当前请求的Propose请求
    2. 不接受Proposal ID小于当前请求的Accept请求
    3. 不违背以前做出的承诺下,回复已经Accept过的提案中Proposal ID最大的那个提案的Value和Proposal ID,没有返回空值。
  3. Propose:Proposer收到多数Acceptor的Promise应答后,从应答中选择Proposal ID最大的提案的Value,作为本次要发起的提案。如果所有应答的提案Value均为空值,则可以自己随意决定提案Value。如果携带当前Proposal ID,向所有Acceptor发送Propose请求。

  4. Accept:Acceptor接收到Propose请求后,在不违背自己之前做出的承诺下,接受并持久化当前Proposal ID和提案Value

  5. Learn:Proposer收到大多数Acceptor的Accept后,决议形成,将形成的决议发送给所有Learner。

Paxos算法问题

系统中有一个以上Proposer,多个Proposers相互争夺Acceptor,造成迟迟无法达到一致的情况。

改进:从系统中选出一个节点作为Leader,只有Leader能发起提案

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5654223.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存