Paxos 算法的其中 2 类(还有其他类型):
1、Basic Paxos : 描述多节点之间如何就 单个值(Value)达成共识
2、Multi-Paxos : 描述执行多个Basic Paxos实例,对一系列值达成共识
Multi-Paxos 的目标就是实现 Replicated log.
一、优化
(一)引入领导者节点
只有领导者节点一个提议者,只有它说了算,所以就不存在提案冲突。
(二)简化阶段
领导者选举
在 Chubby 中,主节点是通过执行 Basic Paxos 算法,进行投票选举产生的。
并且在运行过程中,主节点会通过不断续租的方式来延长租期(Lease)。
稳定运行
领导者处于稳定状态时,省掉准备阶段,直接进入接受阶段。
二、应用
Chubby
写请求,发送到主节点
在 Chubby 中,为了实现了强一致性,读操作也只能在主节点上执行
ZK
Zookeeper是Chubby开源实现
ZK | Paxos | |
---|---|---|
协议 | ZAB (只保证 写操作线性 + 客户端有序) | 带租约的paxos (线性一致性) |
API | 提供临时Znode,需要client实现锁 | 有直接的加锁API |
目标 | 追求 高吞吐量 (1)每个机器都可以读 (2)提供sync方法刷新值 | 读写都在master单机 |
在实际使用时,我不推荐你设计和实现新的 Multi-Paxos 算法,而是建议优先考虑 Raft 算法,因为 Raft 的正确性是经过证明的。