从失败的mongo副本实例中重新查询

时间:2014-03-14 10:45:47

标签: node.js mongodb replication high-availability

我有一个在群集中运行的节点应用程序和一个包含3个实例的mongo副本集。 应用程序使用本机mongodb驱动程序(https://www.npmjs.org/package/mongodb)。 当mongo实例因执行查询而失败(崩溃或连接问题)时,客户端会收到500错误。是否可以将失败的查询重定向到另一个mongo实例?

对不起我的英文)

1 个答案:

答案 0 :(得分:-1)

如果主要崩溃,那么根据定义,它无法指向另一个辅助。您必须处理代码中的辅助端点。我没有使用mongodb本地,只是猫鼬,但是seudocode将是

var connection=new connection(primary server);
var query="{...}";

connection.runquery(query,function(err,response) {
    if(err) {
        console.log('Error, will retry with secondary');
        var connection2=new connection(secondary server);
        connection2.runquery(query,function(err2, response2) {
            if(err2) {
                console.log('Error, replica secondary is also down. OMG');
            } else {
                console.log(response2);
            }
        }
    } else {
        console.log(response);
    }
});