首页 > 解决方案 > 端点级别的 Node.js 集群负载平衡

问题描述

我使用集群并且有 2 个节点正在运行。每个节点都有一个 API 执行一项任务大约 5-6 秒。

例如

在 cluster.js 中

const cluster = require("cluster");

if (cluster.isMaster) {
  for (let i = 0; i < 2; i++) {
    cluster.fork();
  }
} else {
  require("./server");
}

在 server.js 中

  const express = require("express");
  const app = express();
  const port = 8080;

  app.get("/", async (req, res) => {
   await sleep(5000);
   res.send('handled by process: ' + process.pid);
  });

  async function sleep (ms){
    if (ms <= 0) return;
    return new Promise((resolve) => {
      setTimeout(resolve, ms);
    });
  };

  app.listen(port, () => console.log(`port: ${port}`));

如果我向 API 请求。第一个节点收到请求并处理大约 5-6 秒。在它完成流​​程和响应之前,我将第二个请求发送到 API。但是请求被发送到第一个节点,而不是第二个节点。如何实现节点集群来做到这一点?

标签: node.jsexpresscluster-computingload-balancingnode-cluster

解决方案


推荐阅读