我是zookeeper的新手。我已经在单机中配置了它。但是我在zookeeper的文档中遇到了ensemble和quorum这两个词。请告诉我区别之间的区别
ensemble and quorum...
谢谢..
答案 0 :(得分:4)
如果要在zookeeper服务器中拥有高可用性,可以使用多个zookeeper服务器来创建集合。动物园管理员基本上都有主从架构。在一个合奏中,将有一个主人,其余的将是奴隶。如果主设备发生故障,其中一个从设备将充当主设备。
分配主服务器的顺序称为仲裁。当您创建一个集合时,zookeeper会在内部为从服务器创建一个序列ID。当主主机发生故障时,它将检查下一个序列ID以创建新的主机。 在zookeeper中创建节点时也使用了仲裁概念。
答案 1 :(得分:4)
Ensemble是构成分布式计算机生态系统的节点(或服务器,如果您愿意)的数组。
法定人数就是事情变得有趣的时候。在特定的任务/工作中,Quorum确保可以维持健康的领导者 - 追随者。换句话说,确保可以获得多数投票以进行活动(例如,提交/更新/删除等)的行为。在复制策略中,仲裁是必须的。
让我们尝试使用非技术性的例子:
1)在贵公司 - 由5名董事(合奏团)组成的董事会。
|d1, d2, d3, d4, d5|----- BoD
2)每位董事在每项决定中都有相同的发言权。但大多数情况下,如果3名董事在任何时候都应该同意一个项目。如果不存在多数,公司就会失灵。
3)一个特定项目P1
- 他们随机投票选出d1,d2,d3的大多数作为项目的决策者。但是d4和d5完全知道发生了什么(这样他们就可以随时进入)。
d3
几个月过去了,再次大家都同意大多数将使用d1,d2,d4形成。 d5仍然知道发生了什么。我们只剩下4名董事了。
5)再次发生灾难。 d5离开公司换另一个竞争对手。但这并没有改变任何事情,因为该公司仍然可以使用3名成员的BoD。
6)在另一场灾难发生的任何时候,BoD和任何董事都变得“无法” - 公司功能失调,即我们已经失去了法定人数形成标准。 Zookeeper使用ceil(N/2) - 1
公式来获取Ensemble允许的最大失败次数并保持稳定的仲裁。在这种情况下,推荐的最小集合节点为3(最多可容忍1个故障)。
答案 2 :(得分:4)
此答案适用于仍对Ensemble and Quorum
有疑问的人。 合奏不过是一组Zookeeper服务器,其中 Quorum 中定义了规则以构成一个健康的合奏。它是使用公式Q = 2N+1
定义的,其中Q
定义了形成健康集成体所需的节点数量,该集成体可以允许N
个故障节点。在下面的示例中,您将了解此公式。
在开始示例之前,我想定义两件事-
集群:一组连接的节点/服务器(现在将使用node
),其中一个节点作为Leader / Master,其余节点作为Followers / Slaves。
健康的乐团:在任何给定时间点只有一个活跃的Leader的集群,因此容错。
让我用一个示例来解释,该示例在定义Ensemble and Quorum
时经常使用。
3 = 2N+1 => N = (3-1)/2 = 1
公式,这可能会导致1次失败。因此,当发生下一个故障(连接或节点故障)时,不会选择任何节点作为领导者,因此,集成体将不提供任何写/更新/删除服务,因此,客户端集群的状态在Zookeeper集群节点之间保持一致。因此,直到有多数节点可用且已连接时,领导者选举才会发生,其中多数m = (n/2)+1
,其中n
代表上次选举发生时可用的节点数。因此,在这里,第一次选举发生在3个节点上(作为其3节点群集)。然后发生第一个故障,因此剩余的2个节点(多数为m = (3/2)+1 = 2
)可以进行选举。然后发生了第二次失败,现在他们没有多数,因为只有一个节点可供选举,但是所需的多数是m = (2/2)+1 = 2
。 4 = 2N+1 => N = (4-1)/2 = ⌊1.5⌋ = 1 //floor(1.5)=1
5 = 2N+1 => N = (5-1)/2 = 2
公式,这可能会导致2次失败。6 = 2N+1 => N = (6-1)/2 = ⌊2.5⌋ = 2
结论:
n
(偶数个)节点倾向于允许与n-1
(奇数个)节点相同数量的故障答案 3 :(得分:0)
合奏:组中的节点数。 法定人数:采取行动所需的节点数。 示例:您有5个节点。 整体是5。但是根据多数规则,法定人数应该是3。如果没有成功写入3个节点,则将成功响应发送给客户端。 Apache Zookeeper Quorum