gpt4 book ai didi

mongodb - 在 MongoDB 中投票

转载 作者:IT老高 更新时间:2023-10-28 13:17:25 25 4
gpt4 key购买 nike

建议使用奇数组。我的疑问是,当一个人从奇数集下降时,我们有一个偶数集。成员数量在一个一个下降时在奇数和偶数之间波动。我们总是没有奇怪的成员场景。有人能解释一下 MongoDB 投票的工作原理吗?

最佳答案

投票由大多数投票成员完成。

想象一个具有三个(投票)成员的副本集。假设节点 A 是主节点,节点 B+C 是辅助节点。节点 A 宕机,因此节点 B+C 进行选举。他们仍然占多数(三分之二)。选举首先由优先级决定。如果两个节点 B 和 C 具有相同的优先级,那么与失败的主节点 (oplog) 相关的最新节点将获胜。假设它是节点 B。

一旦节点 A 重新活着,就没有新的选举。节点 B 仍然是主节点,而 C+A 现在是从节点。

另一方面,如果两个节点出现故障,您就没有多数,因此副本集不能再接受更新(应用写入),直到两个故障服务器中的至少一个变为事件状态(并已连接由单个幸存节点)再次。

现在想象一个有四个(投票)成员的副本集。假设节点 A 是主节点,节点 B+C+D 是辅助节点。节点 A 宕机,因此节点 B+C+D 进行选举。他们当然占多数(四分之三)

但是,如果两个节点出现故障,则您没有多数(四分之二),因此副本集再次处于只读模式。

这就是为什么建议使用奇数的原因;如果你在 3 个成员的副本集中失去了一个成员,这与在 4 个成员的副本集中失去一个成员是一样的:你仍然获得仲裁多数并且可以选举一个新的主节点(RS 仍然可以通过以下方式选举一个新的主节点)多数)。另一方面,如果您在 3 个成员副本集或 4 个成员副本集(或 n 个成员副本集的 n/2 个成员)中失去两个成员 - 再次 - 影响是相同的:没有新的领导者可以被投票选举产生。

因此,长话短说,在副本集中拥有偶数个成员并不会增加冗余。

更多see election internals

关于mongodb - 在 MongoDB 中投票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15597372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com