oat*_*nch 3 database-design mongodb database-replication cap-theorem mongodb-replica-set
我偶然发现 MongoDB 官方网站解释了如何设置奇数成员副本。我还从同一站点听说了Arbiter一词,根据我的理解,它不会被选为主要节点,但它确实参与选举(来自https://docs.mongodb.com/manual/core/replica-set ) -仲裁者/)。
在《为什么我们在 MongoDB 复制中需要“仲裁器”?》中还有一篇与仲裁器相关的帖子。这就涉及到 CAP 定理,这使得事情变得更加复杂。
首先,为什么我们需要使成员数量为奇数?另外,有人可以用简单的外行英语向我解释一下这个仲裁者是什么以及它在给定副本集中的作用是什么?
提前致谢。
简而言之:就是阻止副本集的两个正常节点在彼此失去联系时陷入裂脑情况。
MongoDB 副本集的设计是为了,如果一个或多个成员出现故障或失去联系,其他成员能够继续运行,只要他们之间拥有多数成员。大多数子句很重要:如果没有它,您可能会遇到这样的情况:网络被分成两部分,并且分区每一侧的节点认为它们仍在承载副本集,并最终得到不同的副本集。数据。
因此,为了避免脑裂问题,如果副本集的节点不能获得绝对多数,则它们将不会继续。一个例子是,如果您有两个节点,在副本集中如下所示:
如果他们失去沟通,结果是对称的:
每个人都会以同样的方式推理:
如果有第三个节点,那么即使两个主节点失去联系,仍然会有其中一个与仲裁器保持联系。这允许两个主节点做出不同的决策,并保持副本集运行,同时避免裂脑问题。
考虑以下 3 节点副本集示例:
无论网络分区朝哪一种方向发展,一个节点仍将与仲裁器保持联系;例如这样:
节点 A 将:
而节点 B 能够做出不同的反应:
这也说明了您应该如何部署仲裁器来获得该好处:
| 归档时间: |
|
| 查看次数: |
1852 次 |
| 最近记录: |