共识算法(1) - paxos & raft

  1. Paxos

    算法的介绍在wikipedia里解释很清楚,可以结合example里的例子加深理解。概括来说,paxos分为prepare和accept两个阶段,将角色分为proposer,acceptor和learner,最基本的标准是majority quorum。每次proposer以(sequence number n, value v)的形式向acceptor提议(n为每个proposer节点自行管理的单增值,注意,这里会有多个proposer在并行的提议)。如果将prepare request到最终accept视作一轮,那么最终accept的提议是来自n最高的proposer,但是v是在prepare阶段最早得到quorum accept的,因为acceptor收到prepare request作出这样的promise(即承诺不再accept比该proposal的n更小或相等的值),并且返回收到并回复的prepare request的值。

  2. Raft

    大致思路是,raft角色分为leader,follower和candidate(在leader election阶段)。每个leader的当选任期有全局统一且历史递增的term number。所有的写请求被路由或者follow重定向提交到leader,相当于将proposer缩减成唯一一个leader,leader给每个请求log entry添加index。整个过程也分为两个阶段,prepare阶段leader将log entry同步到所有follower,收到majority quorum回复同步后进入commit阶段,leader先commit本地,发送commit消息到follower,并且回复client。follower再commit本地执行,commit该index也意味着之前小于该index的消息都已同步并且全网一致。leader失败后则进入新一轮的选举(term值增加),最新最全数据的节点当选,新leader将其本地数据全网同步,follower相应补充或者剪枝,保证全局数据一致。

  3. 综述

    paxos最早的理论基础,但是工程上实现难度比较大,所以zookeeper(07年)自己设计了zab。13年raft出现,借鉴了zab的设计思想,同时工程上相对paxos更容易实现和理解。这些算法大量用于分布式应用及组件设计,假设前提是没有恶意节点,但并不能解决拜占庭将军问题(Paxos可以针对性扩展为Byzantine Paxos)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值