我正在动物园管理员学习主从模型。我只是有一个问题:
如果一个主设备和一个设备无法相互通信会发生什么?像主人无法从奴隶那里得到ACK?奴隶会重启吗?
答案 0 :(得分:1)
这取决于法定人数如何分区。您可能知道zookeeper作为zookeeper服务器的法定数量运行。如果两台服务器无法相互通信,则表示存在网络分区问题(一组服务器无法访问网络不同部分的其他服务器)。由于我们在仲裁中使用奇数个服务器,因此将有两个分区,一个包含大多数服务器,另一个包含少数服务器。
如果领导者属于多数分区,
由于领导者拥有法定人数的大部分,法定人数将继续运作。在少数分区中,服务器将关闭并进入领导者选举阶段。以下文本引自Apache Zookeeper的user mail list
中的邮件线程。
分区后,少数民族地区的所有服务器都将关闭并进入领导者选举阶段。所有客户会话 连接到这些服务器将断开连接并将接收 “KeeperState.Disconnected”事件给他们的观察者,如果有的话。
但ZooKeeper支持只读服务器模式。在这种模式下,客户端可以 即使服务器可能连接到只读服务器 从法定人数中划分出来。
如果领导者属于少数群体分区,
同样,领导者选举将在两个分区中发生,少数群体分区将无法选举领导者。因此,将关机。多数分区将选出新的领导者并继续运作。
在您的问题中,您所引用的master cannot connect to slave
是网络分区的一个示例。主(领导者)在少数分区中,或者奴隶在少数分区中。
希望你有这个想法: - )