【问题标题】:How mongodb handles reads from secondary nodes?mongodb 如何处理来自辅助节点的读取?
【发布时间】:2021-08-10 02:04:17
【问题描述】:

我的默认连接字符串将读取首选项设置为主要,并且它具有所有副本集 url。

当我使用此代码时,我可以看到我的读数变为二级

let db = MongoPool.db()    
let collection = await db.collection("tableName", {readPreference:'secondaryPreferred'});
let result = collection.findOne( {userName: "" });

但是,这个连接是如何用连接池处理的呢?

是否为此读取创建了到辅助节点的新连接?

基本上,mongo 如何处理定向到辅助节点的读取,它是建立新连接,还是所有读取都转到主节点,主节点将这些读取重定向到辅助节点?

【问题讨论】:

    标签: node.js mongodb mongodb-replica-set


    【解决方案1】:

    驱动程序将查询定向到适当的节点。

    在副本集拓扑中,驱动程序连接到所有节点并直接向辅助节点发送查询。

    在分片集群中,驱动程序连接到 mongos 路由器,后者将查询转发到各个分片的适当副本集节点。

    【讨论】:

    • 如果连接池大小为 10,那么考虑到我们有 3 个节点,一个主节点和两个从节点,是否有 30 个连接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2017-11-17
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多