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 算法rithm与MongoDB Replica Set Elections上的文档进行比较.