raft consensus algorithm与MongoDB的主要选举过程有什么不同,除了MongoDB在选举主要时考虑其他因素(例如优先级)这一事实?
答案 0 :(得分:20)
在MongoDB 2.4中,共识方法的一些关键差异是:
Raft使用强大的领导者模型。领导者负责管理从领导者到其他服务器的复制和数据流。在MongoDB副本集中,辅助节点遵循上游主机的操作日志( oplog ),该主机可以是具有较新oplog的主节点或辅助节点。
Raft只有三个节点状态需要考虑:领导者(主要),追随者(次要)或候选者(指定的主要)。 MongoDB需要考虑additional node states包括更多潜在的错误状态,例如RECOVERING
或SHUNNED
个节点,或delayed replica set members。
在Raft中,每个节点只能在每个选举期间投票一次候选节点。 MongoDB允许每个节点的投票作为副本集配置的一部分进行调整,因此一些节点可能是非投票的或可能有多个投票(注意:多个投票配置已被弃用MongoDB 2.5 development branch)。
Raft使用联合共识方法,允许群集在配置更改期间继续运行。 MongoDB需要严格的大多数投票节点来选举新的主要节点;当选举正在进行时,副本集没有主要内容,不能接受写入。
有关详细信息,您应该将筏纸In Search of an Understandable Consensus Algorithm与MongoDB Replica Set Elections上的文档进行比较。