apache-zookeeper - 为什么 Chubby Lockserver 不是多主的?

标签 apache-zookeeper paxos

据我所知,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/

相关文章:

java - 从 java 程序启动 zookeeper 服务器的最佳方式

apache-zookeeper - Zookeeper CLI 失败 - IOException 数据包 <len12343123123> 超出范围

cluster-computing - 高级主选举算法与欺凌算法相比有什么好处?

java - 生产者连接池 - Kafka

java - Zookeeper java用户名密码

apache-kafka - zookeeper集群中某个节点出现故障后怎么办?

algorithm - 分布式系统中用于共识的更快的 Paxos 相关算法有哪些?

distributed-computing - 避免在分布式系统中过度使用共识协议(protocol)

distributed - 为什么提议者发送的接受请求与从接受者获得的值相同?

concurrency - Paxos 是强一致性的吗?