我采用了 pymongo 的 MongoClient 类来连接到一个具有三个节点的副本集,1 个主节点,2 个辅助节点。代码片段如下:
c = MongoClient([secondary1_hostname, secondary2_hostname], replicaSet='rs0')
当检查三个mongod的日志时,我发现总是有一个连接到primary主机,但是其他2个secondary没有收到来自客户端的连接请求或立即断开连接。似乎客户端首先到达了一个辅助节点,获得了主地址,然后断开了连接并创建了与主节点的长期连接。
但是,当我使用 MongoReplicaSetClient 类时,代码如下:
c = MongoReplicaSetClient(secondary1_name, replicaSet='rs0')
从 mongod 的日志文件中获取每个副本集成员始终创建 3 个连接。
那么,为什么 MongoClient 的行为总是只创建到主节点的连接呢?我阅读了 PyMongo 的手册,但没有找到答案。任何建议表示赞赏。