gpt4 book ai didi

mongodb - pymongo MongoClient 连接到 ReplicaSet

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

我采用了 pymongo 的 MongoClient 类来连接到一个具有三个节点的副本集,1 个主节点,2 个辅助节点。代码片段如下:

c = MongoClient([secondary1_hostname, secondary2_hostname], replicaSet='rs0')

当查看三个mongod的日志时,我发现总是有一个连接到primary主机,但是其他2个secondary没有收到来自客户端的连接请求或者连接立即断开。似乎客户端首先到达了一个辅助节点,获得了主地址,然后断开了连接并创建了与主节点的长期连接。

但是,当我使用 MongoReplicaSetClient 类时,代码如下:

c = MongoReplicaSetClient(secondary1_name, replicaSet='rs0')

每个副本集成员总是创建 3 个连接,从 mongod 的日志文件中获取。

那么,为什么 MongoClient 的行为总是只创建与主节点的连接?我阅读了 PyMongo 的手册,但没有找到答案。任何建议表示赞赏。

最佳答案

MongoClient 仅用于单个连接,当与 MongoD 对话时,它将选择数据库列表中的最后一个。添加 replicaSet pymongo 时,它将验证它连接到的副本集是否与此名称匹配。暗示指定的主机是一个种子列表,pymongo 应该尝试找到集合的所有成员,然后它将连接到主节点。

MongoClient 接受多个主机的另一个原因是为了处理 Mongos 和高可用性:http://api.mongodb.org/python/current/examples/high_availability.html#high-availability-and-mongos MongoClient 还处理通过 Mongos 与副本集通信时的副本集配置。

MongoReplicaSetClient 专门用于副本集连接,它试图找到集合的所有成员。它还会启动副本集监控器,使其能够快速响应副本集配置的更改。

关于mongodb - pymongo MongoClient 连接到 ReplicaSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852641/

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