所以,这是因为配置服务器进行 2 阶段提交的方式。如果你有一个配置服务器并且它失败了,那么你的整个系统就会失败。如果您有 3 个并且一个失败,则所有元数据仍然可用,但是您失去了 2 个阶段提交的弹性系数。如果没有 3 个成员,您将无法进行 2 个阶段提交。
因此,您可能仍会使用其他两个进行读取,但平衡器本质上已关闭,因此不会发生块迁移或拆分(因此元数据变为只读)。这是因为您无法使用 3 节点配置设置使用的提交过程来提交拆分或迁移,因此它们不会发生。
不建议使用 1 个配置服务器运行。基本上,如果它出现故障,您将不知道您的任何数据在哪里。
2 阶段提交仅适用于 3 台机器,因为它可以确保您的数据保持一致状态。这意味着如果一台机器在更新过程中死机,则该更新将失败或持续存在,具体取决于它是否已提交到至少另一个将更新第三个节点(因此是 2 阶段提交)。因此使用剩下的 2 个配置服务器读取分片集群是安全的。
你不能用 2 个节点来做到这一点。它可能已经通过,也可能没有,您无法判断,因为您无法将最后一个剩余节点与任何其他节点进行比较,因为另一个节点已关闭。因此,安全的做法是在备份第三个节点之前不要进行任何更新,否则您可能会读取过时的数据。
如果您想要无缝抗故障,那么使用 2 是没有意义的,因为您使用 2 阶段提交。如果您宁愿什么都没有,那么它确实没有比 1 个节点更多的持久性,然后可能是不正确的数据。在分片集群中,没有任何东西和不正确的数据齐头并进,因为无论哪种方式,您都不知道在哪里可以找到您的块。
它基本上是为了保护您免受潜在的配置数据损坏和不一致的影响。