首页 > 解决方案 > 在 express api 中使用节点集群总是有益的吗?

问题描述

function declareCluster() {
  if (cluster.isMaster) {
    createWorkers();
    handleWorkerExit();
    return;
  }
  app.listen(environment.port, () => {
    console.log(new Date(), `Listening at port ${environment.PORT}`);
  });


  function createWorkers() {
    for (let index = 0; index < cpuCount; index++) {
      cluster.fork();
    }
    cluster.on('online', (worker) => {
      console.log(new Date(), 'Worker ' + worker.process.pid + ' is online');
    });
  }

  function handleWorkerExit() {
    cluster.on('exit', (worker, code, signal) => {
      console.log(new Date(), 'Worker ' + worker.process.pid + ' died with code: ' + code + ', and signal: ' + signal);
      console.log(new Date(), 'Starting a new worker');
      cluster.fork();
    });
  }
}

因此,我们可以使用集群模块创建负载均衡器,让每个工作人员使用此代码处理 API 请求。这是所有快递api都应该有的某种样板吗?我的意思是,使用所有 cpu 核心来平衡请求总是好的,对吗?在哪些情况下我们不应该这样做?

标签: node.jsexpressparallel-processingcluster-computing

解决方案


推荐阅读