除了 MongoDB 在选举主节点时考虑其他因素(例如优先级)之外,raft 共识算法与 MongoDB 的主节点选举过程有何不同?
1 回答
MongoDB 2.4 共识方法的一些主要区别是:
Raft 使用强大的领导者模型。领导者负责管理从领导者到其他服务器的复制和数据流。在 MongoDB 副本集中,辅助节点遵循上游主机的操作日志 ( oplog ),上游主机可以是主节点,也可以是具有更新 oplog 的辅助节点。
Raft 只需要考虑三个节点状态:领导者(主要)、追随者(次要)或候选者(提名主要)。MongoDB 有额外的节点状态需要考虑,包括更多潜在的错误状态,例如
RECOVERING
或SHUNNED
节点,或延迟的副本集成员。在 Raft 中,每个节点每个选举期只能为一个候选节点投票一次。MongoDB 允许将每个节点的投票作为副本集配置的一部分进行调整,因此某些节点可能没有投票权或可能有多个投票(注意:从MongoDB 2.5 开发分支开始,不推荐使用多个投票配置)。
Raft 使用联合共识方法,允许集群在配置更改期间继续运行。MongoDB 要求严格多数投票节点来选举新的主节点;while an election is in progress the replica set has no primary and cannot accept writes.
有关更多详细信息,您应该将 Raft 论文In Search of anUnderable Consensus Algorithm与有关MongoDB Replica Set Elections的文档进行比较。