Apache zookeeper 当1个节点关闭时,3个zookeeper集群如何保持活动状态?

Apache zookeeper 当1个节点关闭时,3个zookeeper集群如何保持活动状态?,apache-zookeeper,paxos,Apache Zookeeper,Paxos,文件说: 3服务器集成允许单个服务器出现故障,并且服务仍然可用 但是,要建立仲裁,需要有ceil(n/2)+1个节点 在3个节点的情况下,即: ceil(3/2)+1=ceil(1.5)+1=3 因此,如果1个节点关闭,则不应建立仲裁,zookeeper应关闭 在这种情况下,上述文档是否有误?在三节点集群中,仲裁为2,因为这是多数。空间或时间上的任何两个多数都必须重叠;因此,不能不知道任何其他多数中的操作,因为至少有一个节点同时处于两个多数中。这是Paxos算法使用的基本属性(注意Zookeep

文件说:

3服务器集成允许单个服务器出现故障,并且服务仍然可用

但是,要建立仲裁,需要有
ceil(n/2)+1个
节点

在3个节点的情况下,即:
ceil(3/2)+1=ceil(1.5)+1=3

因此,如果1个节点关闭,则不应建立仲裁,zookeeper应关闭


在这种情况下,上述文档是否有误?

在三节点集群中,仲裁为2,因为这是多数。空间或时间上的任何两个多数都必须重叠;因此,不能不知道任何其他多数中的操作,因为至少有一个节点同时处于两个多数中。这是Paxos算法使用的基本属性(注意Zookeeper使用的是ZAB而不是Paxos,我的观点是一致性算法中的安全性使用多数)。因此,您的计算应该是
floor(N/2)+1
,这使得3节点集群中的法定人数为2,5节点集群中的法定人数为3,7节点集群中的法定人数为4,等等。

答案基本正确,但ZooKeeper不使用Paxos。它使用ZooKeeper原子广播协议(ZAB),它与Raft比Paxos更相似。领导者是一个始终占多数的节点。是的,我知道,正如我最近在对其他人问题的评论中所说的那样。我将对答案进行编辑,以明确它只是任何安全算法(如Paxos)所必需的。