2

据我了解 Chubby 在任何时候都有 5 台 Chubby 服务器。一个是主服务器,负责协调对仲裁的写入,其他 4 个服务器是只读的,并转发处理对主服务器的写入。写入使用 Paxos 来保持一致性。

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

4

1 回答 1

2

拥有一个主节点效率更高,因为节点不必处理那么多的争用。

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

Paxos(以及 Chubby)使用一种称为“杰出领导者”的优化,其中副本将写入转发给杰出领导者以减少争用。(我假设 Chubby 的副本可以做到这一点。如果他们不能做到,但设计师只是将这个责任推给了客户。)Zookeeper 也这样做。

Chubby 和 Zookeeper 实际上处理了多个领导者,因为他们必须处理一个不知道自己已经死去然后又死而复生的领导者。对于 Chubby 来说,这就是使用 Paxos 的全部意义所在:最终其中一位领导者将获胜。(理论上它可能不会,但我们工程师会做一些实际的事情,比如随机退避,以使概率小到可以容忍的程度。)另一方面,Zookeeper 为每个领导者分配一个非递减的 id;并且拒绝任何非当前领导者的转换。这意味着当领导者死亡时,Zookeeper 必须暂停并经历重新配置阶段,然后才能接受新的转换。

于 2013-03-29T21:09:52.560 回答