除了MongoDB在初选时考虑了其他因素(例如优先级)之外,"raft consensus algorithm"与MongoDB的初选过程有什么不同?

推荐答案

MongoDB 2.4中关于共识方法的一些关键差异如下:

  • Raft采用strong leader型.领导者负责管理从领导者到其他服务器的复制和数据流.在MongoDB副本集中,二级主机遵循upstream 主机的操作日志(log)(oplog),upstream 主机可以是主主机,也可以是具有较新oplog的二级主机.

  • Raft只有三种 node 状态需要考虑:领导者(主要)、追随者(次要)或候选人(主要提名).MunGDB有additional node states个考虑,包括更多潜在的错误状态,比如RECOVERING个或SHUNNED个 node ,或者delayed replica set members个.

  • 在Raft中,每个 node 在每个选举任期内只能为候选 node 投票一次.MongoDB允许将每个 node 的投票作为副本集配置的一部分进行调整,因此一些 node 可能没有投票权,或者可能有多个投票权(注意:从MongoDB 2.5 development branch个 node 开始,多个投票权配置已被弃用).

  • Raft采用joint consensus方法,允许集群在配置更改期间继续运行.MongoDB需要绝对多数的投票 node 来选举新的主 node ;正在进行 Select 时,副本集没有主副本,无法接受写入.

要了解更多详细信息,您应该将Raft paper In Search of an Understandable Consensus 算法rithmMongoDB Replica Set Elections上的文档进行比较.

Mongodb相关问答推荐

在MongoDB中使用explain()和查询时缺少winningPlan''''

如何在MongoDB中正确解析佛年?

MongoDB:如何通过增量向量递增整数向量

为什么这个查询可以在MongoDB中使用?

执行聚合以消除重复并获得唯一计数

MongoDB 按 created_at 月聚合

如何判断 MongoDB 的两个数组中是否存在值?

如何在 Spring-Data-MongoDB 中使用 $facet、$addFields 和 $function

如何检索 MongoDb 集合验证器规则?

Mongodb将重音字符匹配为基础字符

如何获取 Mongoid 文档的所有字段名称?

带有 jQ​​uery Ajax/JSON 前端的 MongoDB 或 CouchDB 中间件

在 mongodb 聚合框架中执行 case-statement

MongoDB的数据库管理工具

120 个 mongodb 集合与单个集合 - 哪个更有效?

从 nodejs 到 mongodb 或 mongoose 的动态数据库连接

如何在 golang 和 mongodb 中通过 id 查找

如何从mongoose中的对象 ID 获取创建日期?

我如何将 mongodb 与electron一起使用?

我可以只获取 Cursor 对象(pymongo)中的第一项吗?