据我所知,Chubby 在任何给定时间都有 5 个 Chubby 服务器。一台是主服务器,负责协调对仲裁的写入操作,另外 4 台服务器是只读服务器,负责转发处理对主服务器的写入操作。写入使用Paxos来保持一致性。
有人可以向我解释一下为什么主副本和 4 个副本之间有区别吗?为什么Chubby不是多主?这个问题也适用于 Zookeeper。
最佳答案
拥有一个主节点会更高效,因为节点不必处理太多的争用。
Chubby 和 Zookeeper 都实现了一个分布式状态机,其中系统的重点是决定从一个状态到下一个状态转换的总顺序。当多个节点同时提出转换时,可能需要大量消息(理论上无限消息)来解决争用。
Paxos(以及 Chubby)使用一种称为“杰出领导者”的优化,其中副本向前写入杰出领导者以减少争用。 (我假设 Chubby 副本可以做到这一点。如果没有,他们也可以,但设计者只是将这个责任推给了客户端。)Zookeeper 也这样做。
Chubby 和 Zookeeper 实际上都确实处理多个领导者,因为它们必须处理一个不知道自己已经死亡然后死而复生的领导者。对于 Chubby 来说,这就是使用 Paxos 的全部意义:最终领导者之一将获胜。 (理论上可能不会,但我们工程师会做一些实际的事情,比如随机退避,以使概率变得很小。) 另一方面,Zookeeper 为每个领导者分配一个非递减的 id;任何非现任领导人的过渡都会被拒绝。这意味着当领导者死亡时,Zookeeper 在接受新的转换之前必须暂停并经历重新配置阶段。
关于apache-zookeeper - 为什么 Chubby Lockserver 不是多主的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15697198/