分布式一致性算法-paxos

摘要

Paxos算法运行在允许宕机故障的异步系统中,它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障,从而实现分布式锁功能;

知识点

角色分类(每个节点都同时具有3种角色):

•    提议者(proposer):提出提案
•    决策者(acceptor):参与决策
•    学习者(learner):小弟,接收提案
动作分类:

•    Accept:接受
•    Promise:允诺
•    Choose:批准


前提:

    1.每个提案都有一个唯一id,大的优先级高;
    2.id结构:序列号+服务id;

paxos算法通过分为3阶段:

    阶段一:proposer向acceptor发出一个id=n的提案准备(prepare)请求,acceptor收到请求后,
        如果acceptor收到过比n更大的id,回复这个id更大的提案给proposer;
        否则采取承诺动作(Promise):不再接收id<=n的请求;
    阶段二:如果proposer没有收到比n更大的提案回复,向acceptor发出提案接受请求(Accept)动作;
    阶段三:proposer向所有小弟(learner)发送决议结果;

paxos算法的进化版:multi_paxos:

    由于paxos效率较低且当有多个proposer时容易产生冲突和活锁(livelock);所以在一般的工程项目里,
    一开始会选举一个leader proposer,只有leader proposer可以提问,防止多个proposer锁死问题;
    同时省略prepare阶段,只有一个proposer时无法锁死,由prepare保存一个全局最大提案id;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值