卢声远*_* Lu 22 replication mongodb
假设我们在没有仲裁的情况下设置MongoDB复制,如果主服务器不可用,则副本集将选择辅助服务器作为主服务器.所以我认为它是一种隐式仲裁器,因为副本将自动选择一个主节点.
所以我想知道为什么我们需要一个专用的仲裁节点?谢谢!
Bru*_*sky 12
我创建了一个电子表格,以更好地说明Arbiter节点在副本集中的效果.
它基本上归结为以下几点:
选举在这里详细解释[详细] .在该文件中,它声明 RS可以有50个成员(偶数)和7个投票成员.我强调"状态",因为它没有解释它是如何工作的.对我而言,如果你发生分裂,一方有4名成员(所有投票)而另一方有46名成员(3名投票),你宁愿让46人选出一名主要成员,4名成员阅读 - 只有集群.但是,这正是"有限投票"所阻止的.在这种情况下,您实际上将拥有一个4成员集群,其中一个主集群和一个46成员集群是只读的.解释这有多大意义超出了这个问题的范围,超出了我的知识范围.
这实际上归结为CAP定理,其中声明如果分区两侧的服务器数量相等,则数据库无法维护CAP(一致性,可用性和分区容差).仲裁者专门设计用于在一侧创建"不平衡"或多数,以便在这种情况下可以选出主要人员.
如果你在任何一方获得偶数个节点,MongoDB将不会选择主节点,你的集合将不接受写入.
在任何一方,我的意思是,例如,一边是2,另一边是2.我的英语在那里不容易理解.
所以我的意思是双方.
维基百科为解释CAP提供了一个很好的案例:http://en.wikipedia.org/wiki/CAP_theorem
由于以下原因,必须在复制中使用仲裁器:
希望这可以帮助 !!!