App实例和Zookeeper服务器的数量是否应该相同?
Does the number of App instances and Zookeeper servers should be the same?
App实例数和Zookeeper服务器数是否应该相同?我理解 2F+1 容忍 F 故障的要求,但这是为了容忍 Zookeeper 实例本身的故障。但是 App 实例的数量呢?例如,假设我有 3 个 zookeeper 服务器,我有 2 个由 zookeeper 管理的应用程序 运行 实例,在任何给定时间,我的应用程序只有一个实例 运行 处于主模式,另一个处于待机模式。现在,我希望能够容忍我的应用程序本身(而不是 zookeeper 实例)的一个实例失败,这样我的应用程序的另一个 运行 处于待机模式的实例应该被选为新的领导者。那行得通吗?或者我必须有 3 个应用程序实例和 3 个 Zookeeper 服务器?
应用程序实例数和 Zookeeper 服务器的正确配置是什么?
从 ZooKeeper 的角度来看,运行没有任何特定数量的应用程序实例的要求。应用程序实例是 ZooKeeper 客户端。它们不是 ZooKeeper ensemble(服务器端)的成员,因此它们不受 2F+1 容错要求的约束。
应用程序实例的数量可能会影响应用程序的整体可用性,具体取决于应用程序的设计。 (正如您在示例中所说,您可以 运行 2 个实例,它可以容忍 1 个失败。)
请注意,您的应用程序的领导者选举不同于 ZooKeeper 整体的内部领导者选举。在 ZooKeeper ensemble 中,需要一定数量的服务器 (2F+1) 来选举领导者,然后该 ZooKeeper ensemble 领导者处理来自客户端的事务提议。在应用层,您的代码充当 ZooKeeper 客户端,并使用 Leader Election recipe or the Apache Curator Leader Election API 之类的方式执行自己的领导者选举。 ZooKeeper 集合节点不会投票决定您的应用程序节点中的哪一个成为领导者。相反,您的应用程序节点正在投票决定其中一个成为领导者,并且他们通过与已经拥有自己的领导者的 ZooKeeper 整体协调进行投票。
App实例数和Zookeeper服务器数是否应该相同?我理解 2F+1 容忍 F 故障的要求,但这是为了容忍 Zookeeper 实例本身的故障。但是 App 实例的数量呢?例如,假设我有 3 个 zookeeper 服务器,我有 2 个由 zookeeper 管理的应用程序 运行 实例,在任何给定时间,我的应用程序只有一个实例 运行 处于主模式,另一个处于待机模式。现在,我希望能够容忍我的应用程序本身(而不是 zookeeper 实例)的一个实例失败,这样我的应用程序的另一个 运行 处于待机模式的实例应该被选为新的领导者。那行得通吗?或者我必须有 3 个应用程序实例和 3 个 Zookeeper 服务器?
应用程序实例数和 Zookeeper 服务器的正确配置是什么?
从 ZooKeeper 的角度来看,运行没有任何特定数量的应用程序实例的要求。应用程序实例是 ZooKeeper 客户端。它们不是 ZooKeeper ensemble(服务器端)的成员,因此它们不受 2F+1 容错要求的约束。
应用程序实例的数量可能会影响应用程序的整体可用性,具体取决于应用程序的设计。 (正如您在示例中所说,您可以 运行 2 个实例,它可以容忍 1 个失败。)
请注意,您的应用程序的领导者选举不同于 ZooKeeper 整体的内部领导者选举。在 ZooKeeper ensemble 中,需要一定数量的服务器 (2F+1) 来选举领导者,然后该 ZooKeeper ensemble 领导者处理来自客户端的事务提议。在应用层,您的代码充当 ZooKeeper 客户端,并使用 Leader Election recipe or the Apache Curator Leader Election API 之类的方式执行自己的领导者选举。 ZooKeeper 集合节点不会投票决定您的应用程序节点中的哪一个成为领导者。相反,您的应用程序节点正在投票决定其中一个成为领导者,并且他们通过与已经拥有自己的领导者的 ZooKeeper 整体协调进行投票。