我是Zookeeper的新手,我已经在单台机器上配置了它,但是我在Zookeeper的文档中碰到了ensemble和quorum一词,有人可以告诉我两者之间的区别吗
ensemble and quorum...
Run Code Online (Sandbox Code Playgroud)
谢谢..
这个答案是给那些仍然有疑问的人Ensemble and Quorum。Ensemble只是Zookeeper服务器集群,在Quorum中定义了规则以形成健康的Ensemble。它是使用公式定义的,Q = 2N+1其中Q定义了形成可以允许N故障节点的运行正常集成体所需的节点数。在下面的示例中,您将了解此公式。
在开始示例之前,我想定义两件事
:群集:连接的节点/服务器组(现在将使用node),其中一个节点作为Leader / Master,其余节点作为Followers / Slaves。
健康合奏:在任何给定时间点只有一个活动领导者的集群,因此具有容错能力。
让我用一个示例进行解释,该示例在定义时经常使用Ensemble and Quorum。
3 = 2N+1 => N = (3-1)/2 = 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)=15 = 2N+1 => N = (5-1)/2 = 2。6 = 2N+1 => N = (6-1)/2 = ?2.5? = 2
结论:
n(偶数个)节点倾向于允许与n-1(奇数个)节点相同数量的故障Ensemble是组成分布式计算机生态系统的一系列节点(如果需要,也可以是服务器)。
法定人数是事情变得有趣的时候。在特定的任务/工作上,Quorum确保可以保持健康的领导者和跟随者多数。换句话说,一种确保获得多数投票以进行一项活动的行为(例如,提交/更新/删除等)。在复制策略中,必须有仲裁。
让我们尝试使用非技术示例:
1)在您的公司中-由5名董事组成的董事会(合奏)。
|d1, d2, d3, d4, d5|----- BoD
Run Code Online (Sandbox Code Playgroud)
2)每个董事在每个决定中都有平等的发言权。但是如果有3位董事在任何时候都应该同意一个项目的多数。如果没有多数,该公司将无法正常运作。
3)一个特定的项目,P1-他们随机投票拥有d1,d2,d3的多数作为该项目的决策者。但是d4和d5完全了解发生了什么(以便他们可以随时介入)。
4)现在(上帝禁止),d3在几个月后去世,再次,每个人都同意多数将使用d1,d2,d4形成。d5仍然知道发生了什么。注意,我们只剩下4位董事。
5)灾难再次来袭。d5离开公司前往另一个竞争对手。但这并没有改变任何事情,因为该公司仍具有由三名成员组成的董事会。
6)在董事会遭受另一场灾难的任何时刻,任何董事都变得“不可用”-公司功能失调,即我们失去了法定人数形成标准。
Zookeeper使用ceil(N/2) - 1公式来获取一个Ensemble所允许的最大失败次数并保持稳定的仲裁。在这种情况下,建议的最小集成节点数为3(最多允许1个故障)。
当您希望在 zookeeper 服务器中具有高可用性时,您可以使用多个 zookeeper 服务器来创建一个集合。基本上zookeeper具有主从架构。在一个合奏中,将有一个主人,其余的将是奴隶。如果主站出现故障,其中一个从站将充当主站。
分配主节点的顺序称为法定人数。创建集成时,zookeeper 在内部为从服务器创建序列 ID。当主 master 失败时,它将检查下一个序列 ID 以创建新的 master。在zookeeper中创建节点时也使用了这种法定人数的概念。
| 归档时间: |
|
| 查看次数: |
4701 次 |
| 最近记录: |