分布式算法-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能发起提案在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snack-counter

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值