记录学习Paxos中的一些理解。
Multi-Paxos vs Basic-Paxos
basic-paxos在一阶段得到value后,proposer并不可以肯定,accept命令会在多数acceptor中成功执行,所以需要accept阶段。因为proposal可以抢占。
而multi-paxos在basic-paxos的二阶段上引入了一个机制,让自己看起来像一阶段一样。假如只允许有一个proposer,accept一定会成功,所以multi-paxos通过paxos协议本身完成了选主,提高了效率。
Raft
Raft一共分为三种角色,leader,follower,candidate。
leader负责客户端请求,写majority即返回客户端。follower失去leader心跳会变成candidate进行选举,得到多数票之后会成为leader。multi-paxos和raft,在选定了leader状态下的行为模式一模一样。
raft保证:
- log落后的候选人,无法被选为leader
- follower接受leader的是LogID连续的日志
Multi-Paxos vs Raft
- raft仅允许日志最多的节点当选为leader,而multi-paxos则相反,任意节点都可以当选leader
- raft不允许日志的空洞,这也是为了比较方便和拉平两个节点的日志方便,而multi-paxos则允许日志出现空洞