gpt4 book ai didi

MongoDB 连接字符串到副本集

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

我在看 http://mongodb.github.io/node-mongodb-native/driver-articles/mongoclient.html当您滚动到“A replicaset connect using no acknowledgement by default and readPreference for secondary”部分时

它声明了一个到副本集的连接字符串,如下所示:

MongoClient.connect("mongodb://localhost:30000,localhost:30001/integration_test_?w=0&readPreference=secondary", function(err, db) {

}

我不明白为什么我们需要指定 2 个主机。我认为 MongoDB 文档已经说明副本集对客户端是透明的。这意味着,客户端只需要连接到主副本集,MongoDB 就会完成这项工作。因此,连接应该只包含 1 个主机。 MongoDB 文档声明副本集中必须至少有 3 个主机,并且此连接字符串仅指定 2 个主机

另外,为什么连接字符串没有说​​明“replicaSet”?

最佳答案

连接字符串中的多个服务器用作发现连接模式的种子列表。您是正确的,您可以只指定主服务器,一切都会完美运行。 也就是说,直到主服务器宕机或非常繁忙。通过在连接字符串中指定多台机器,您可以为客户端提供多个位置来查询副本集配置。

当连接模式解析为副本集时(见下文),驱动程序将找到主服务器,即使它不在种子列表中,只要至少有一个种子列表中的服务器响应(响应将包含完整的副本集和当前主节点的名称)。此外,即使在初始连接之后,也会自动发现其他辅助节点并将其添加(或删除)到混合中。这将使您能够从副本集中添加和删除服务器,驱动程序将自动处理更改。

回答你的最后一个问题,因为指定多个服务器对于它是副本集还是多个 mongos(在分片设置中)是不明确的,驱动程序将通过连接到服务器的发现阶段来确定他们的类型。这在连接时有一点开销,可以通过在连接字符串中指定连接模式来避免 - 因此使用 replicaSet 关键字。因此,虽然没有必要,但它可以加快您的连接时间,以显式声明服务器位于连接字符串中的副本集中。

关于MongoDB 连接字符串到副本集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958759/

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