我是否必须在节点js app中创建与群集不同的数据库连接?

时间:2017-03-22 20:32:46

标签: node.js mongodb express database-connection cluster-computing

我正在使用express开发节点应用程序。我听说集群是提高应用程序性能的好方法。所以我试过这种方式,

if(cluster.isMaster){
  debug(`Master ${process.pid} is running`);

// Fork works
  for (let i =0;i<numCPU;i++){
      cluster.fork();
  }

  cluster.on('exit',(worker,code,signal)=>{
      debug(`Worker ${worker.process.pid} died.`);
  });
}else{

  var app = require('../app');
  app.set('port', port);

  var server = http.createServer(app);

  database.connect(function (err) {
      if (err){
          debug('Unable to connect MongoDB');
          process.exit(1);
      }else{
          server.listen(port);
      }
  });

  server.on('error', onError);

  debug(`Worker ${process.pid} start`);
}

我的问题是,在使用集群之前,我在一开始就创建了Mongo连接并使用数据库即时。但现在我每次都会重复创建集群。我觉得我做了一些无用的事情,但我不知道如何解决它。如果这种创建数据库的方式是错误的,我该如何解决?或者我应该为每个集群创建数据库连接,那么这种方法是否正确?

1 个答案:

答案 0 :(得分:0)

我想我得到了讲师的回答。现在我知道集群并不意味着它运行多个应用程序,但提供了几个连接。因此,我们不必为每个群集创建连接,也不必单独考虑每个群集。我们要做的是创建应用程序并让集群经理做其他事情......