为什么副本集中的成员数为奇数?

问题描述 投票:0回答:1

我已经阅读了多次,但是正在尝试理解该消息。所有文档都声明副本集中的成员数为奇数。原因是因为您希望获得奇数票数以确保适当的选举结果(无关系)。但是,我认为副本集中有奇数个成员是违反直觉的,就好像主数据库不可用时,您剩下的偶数成员才能投票给新主数据库。基于此,实际上,在副本集中具有偶数个成员是否更有意义?这样,如果主数据库不可用,您将有一个奇数来确定结果,并且保证不打成平手?

例如,如果您有3个节点,而其中一个发生故障,则只剩下2个可以投票。因为2是偶数,所以您可以平局,这是我们要避免的事情。要启动2个成员并不好,好像其中一个成员不可用,这将使您剩下1个节点,在这种情况下,这意味着没有主节点。根据我上面的论点,这意味着4会很好。如果一个节点不可用,您将剩下3个节点需要投票(成员数量为奇数)。我知道这与文档说明的相反,但是对我而言,这是有道理的。奇数似乎唯一有意义的地方是在没有节点掉线的情况下进行选举。

想法?

-吉姆

mongodb replicaset
1个回答
0
投票

复制的目的是,如果服务器在副本集中出现故障,您仍然可以访问数据。这个概念称为availability

[如果主节点发生故障,则辅助节点之一将取代其作为主节点;此过程称为failover

可用节点通过election的过程决定哪个节点成为主要节点。

副本集最多可以有50个成员,最多可以有7个投票成员。

为什么成员数为奇数?]

failover机制意味着要选择主要节点的节点的[[多数必须可用。

4个(甚至)成员副本集中,大多数是34/2 + 15(奇数)成员副本集中,多数为35/2 + 1

在5个成员的副本集中,有3个节点可用于该副本集中的更好机会。在4个成员的副本集中,至少必须有3个成员才能使副本集正常运行。因此,对于5个成员副本集(5个中的3个),存在比4(4个成员中的3个)成员副本集更具操作性的机会。

它不仅是成员数量,还包括有多种因素影响选举。

    具有较高优先级的成员有机会当选其他(优先级是数字,数字越大优先级越高。)
  • 此外,具有最新复制数据的辅助成员具有一个优先于没有最新副本的成员。因素像
  • 写关注会影响哪个成员拥有最新的数据。
  • arbiter
  • 成员只能投票但不能复制数据或竞选。隐藏和延迟的成员无法投票或成为主要学生。
就是说,即使可用投票节点的数量相等,选举也已完成(并考虑了上述因素)。选举可能会导致平局,在这种情况下,投票过程将再次开始,直到当选一名成员为主要成员为止。请注意,选举只是系统的一个方面(或过程),该系统可提供高可用性并使您的系统可操作并具有数据复制功能。

另请参见:Factors and Conditions that Affect Elections

© www.soinside.com 2019 - 2024. All rights reserved.