MongoDB选举内部

时间:2015-08-04 01:40:31

标签: mongodb

我对MongoDB投票如何在内部发生感到困惑。 MongoDB文档似乎没有提供详细信息 - 他们只讨论高级别的投票。这篇文章(Voting in MongoDB)解释了结果,但没有解释内部结构。

根据我的研究,似乎有两种选择:

  1. 一名成员宣布正在参选。所有投票成员都投赞成票/否,该成员必须获得大多数肯定,才能当选为主要成员。
  2. 不知何故要求进行选举。所有投票成员都投票给一名成员。无论谁获得多数选票(如果有的话)都会成为主要选票。
  3. 我知道这些是相似的,但我需要能够解释投票如何适用于演示文稿。 哪个选项正确?组合?

    重要的后续问题:平局会发生什么,或者没有成员获得多数?

1 个答案:

答案 0 :(得分:3)

副本集设计的基础概念是基于这样一个事实,即在选举中存在大部分副本集,即奇数个成员(请参阅mongodb副本集架构文档)。实际上,这实际上是副本集中总票数的大多数,这并不一定意味着每个成员在v3.0(mongod)之前有一票。

这是理想选举的出路:

  1. 选举被触发
  2. 触发成员会询问其他成员是否会投票:(是,不,否决)
  3. 来自多数人的
  4. “是”,它将转移到主要
  5. 任何成员的“否决权”选举都将失败
  6. 所有事情保持平等,成员投票选出具有最高优先级的成员
  7. 如果最高优先级成员没有最新的optime,那么选举过程将被否决
  8. 在平局中,默认值是它们在副本集config
  9. 中列出的顺序
  10. 会员必须在赞成票之间等待30秒(减少多次初选的可能性)
  11. 很抱歉由于缺少链接,我无法发布多个

    仅供参考,我相信v3.2将实施一些(如果不是全部)RAFT算法以达成共识

    k chodorow选举的良好解释:http://www.kchodorow.com/blog/2012/01/04/replica-set-internals-bootcamp-part-i-elections/