如果主人和奴隶无法沟通,会发生什么?

时间:2016-12-26 01:03:14

标签: architecture apache-zookeeper distributed-computing

我正在动物园管理员学习主从模型。我只是有一个问题:

如果一个主设备和一个设备无法相互通信会发生什么?像主人无法从奴隶那里得到ACK?奴隶会重启吗?

1 个答案:

答案 0 :(得分:1)

这取决于法定人数如何分区。您可能知道zookeeper作为zookeeper服务器的法定数量运行。如果两台服务器无法相互通信,则表示存在网络分区问题(一组服务器无法访问网络不同部分的其他服务器)。由于我们在仲裁中使用奇数个服务器,因此将有两个分区,一个包含大多数服务器,另一个包含少数服务器。

如果领导者属于多数分区

由于领导者拥有法定人数的大部分,法定人数将继续运作。在少数分区中,服务器将关闭并进入领导者选举阶段。以下文本引自Apache Zookeeper的user mail list中的邮件线程。

  

分区后,少数民族地区的所有服务器都将关闭并进入领导者选举阶段。所有客户会话   连接到这些服务器将断开连接并将接收   “KeeperState.Disconnected”事件给他们的观察者,如果有的话。

     

但ZooKeeper支持只读服务器模式。在这种模式下,客户端可以   即使服务器可能连接到只读服务器   从法定人数中划分出来。

如果领导者属于少数群体分区,

同样,领导者选举将在两个分区中发生,少数群体分区将无法选举领导者。因此,将关机。多数分区将选出新的领导者并继续运作。

在您的问题中,您所引用的master cannot connect to slave是网络分区的一个示例。主(领导者)在少数分区中,或者奴隶在少数分区中。

希望你有这个想法: - )