为什么Chubby lockserver不是多主机?

时间:2013-03-29 04:11:05

标签: apache-zookeeper paxos

据我所知,Chubby在任何时候都有5台胖乎乎的服务器。一个是主服务器,处理对仲裁的写入协调,其他4个服务器是只读的,并且正向处理写入主服务器。写入使用Paxos来保持一致性。

有人可以向我解释为什么主人和4个副本之间存在区别。为什么不是胖乎乎的多主人?这个问题也适用于Zookeeper。

1 个答案:

答案 0 :(得分:2)

拥有单个主服务器的效率更高,因为节点不必处理相同的争用。

Chubby和Zookeeper都实现了一个分布式状态机,系统的要点是决定从一个状态到下一个状态的转换的总排序。当多个节点同时提出转换时,可能需要大量消息(理论上无限消息)来解决争用。

Paxos(以及Chubby)使用称为“尊贵领导者”的优化,其中复制品向前写入尊重的领导者以减少争用。 (我假设Chubby副本做到这一点。如果没有,他们可以,但设计师只是将责任推给客户。)Zookeeper也这样做。

Chubby和Zookeeper实际上处理多个领导者,因为他们必须处理一个不知道它已经死亡然后从死里复活的领导者。对于Chubby来说,这是使用Paxos的重点:最终其中一位领导者将获胜。 (从理论上讲,它可能没有,但是我们工程师会做一些实用的事情,比如随机退避,以使这个概率相当小。)另一方面,Zookeeper为每个领导者分配一个不减少的id;并且拒绝任何非当前领导者的过渡。这意味着当领导者死亡时,Zookeeper必须暂停并经历重新配置阶段,然后再接受新的转换。