假设我们设置了一个没有仲裁的MongoDB复制,If the primary is unavailable, the replica set will elect a secondary to be primary.所以我认为它是一种隐式仲裁器,因为副本将自动选择一个主副本。
所以我想知道为什么我们需要一个专用的仲裁节点?谢谢!
答案 0 :(得分:8)
我created a spreadsheet以更好地说明仲裁服务器节点在副本集中的影响。
它基本上归结为以下几点:
选举解释[在穷人]详细here。在该文件中,陈述 RS可以拥有50个成员(偶数)和7个投票成员。我强调“状态”,因为它不会解释它是如何工作的。对我来说,似乎如果你的一方有4名成员(所有投票)和另一方有46名成员(3名投票),那么你宁可让46人选出一名主要成员,4名成员阅读 - 只有集群。但是,这正是“有限投票”所阻止的。在这种情况下,您实际上将拥有一个4成员集群,其中一个主集群和一个46成员集群是只读的。解释这是有道理的是超出了我的知识的范围。
答案 1 :(得分:7)
这实际上归结为CAP定理,其中声明如果分区两侧的服务器数量相等,则数据库无法维护CAP(一致性,可用性和分区容差)。仲裁者专门设计用于在一方创造“不平衡”或多数,以便在这种情况下可以选出主要人员。
如果你在任何一方获得偶数个节点,MongoDB将不会选择主节点,你的集合将不接受写入。
任何一方我的意思是,例如,一边是2,另一边是2。我的英语在那里不容易理解。
所以我的意思是双方。
维基百科为解释CAP提供了很好的理由:http://en.wikipedia.org/wiki/CAP_theorem
答案 2 :(得分:2)
Arbiters是一种可选机制,当您在复制集中部署偶数个mongod时,允许投票成功。 Arbiters重量轻,意味着部署在不是专用mongo副本的服务器上,即:服务器的主要角色是其他任务,如redis服务器。由于它们很轻,它们不会(明显地)干扰系统的资源。
来自文档:
仲裁者没有数据集的副本,也不能成为数据集 主。副本集可能有仲裁者在选举中添加投票 对于小学。 Arbiters允许副本集的数量不均匀 成员,没有复制数据的成员的开销。
答案 3 :(得分:1)
由于以下原因,必须在复制中使用仲裁程序:
希望这有帮助!!!