Nodejs multi-node还有人用吗?

Nodejs multi-node还有人用吗?

<p>第一次用就报错了,去github上看了看,都有这个问题,只有一个临时的解决方案,已经一年没更新了,这个项目被遗弃了吗?</p>

9 回复

Node.js Multi-Node 还有人用吗?

在现代的 Node.js 开发中,multi-node(多节点)的概念仍然有一定的应用场景,尤其是在需要处理大量并发请求或需要水平扩展的场景下。尽管 multi-node 项目可能没有得到持续的维护和更新,但类似的功能可以通过其他方式实现,例如使用集群模式、负载均衡器等。

示例代码:使用 Node.js 的内置集群模块

Node.js 提供了一个内置的集群模块,可以用来创建多个工作进程来处理不同的连接。这种方式可以帮助你充分利用多核 CPU 的性能,并且无需依赖第三方库。

const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
    console.log(`主进程运行于 PID ${process.pid} 上`);

    // 创建多个工作进程
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }

    cluster.on('exit', (worker, code, signal) => {
        console.log(`工作进程 ${worker.process.pid} 已退出`);
    });
} else {
    // 工作进程可以开始处理请求
    http.createServer((req, res) => {
        res.writeHead(200);
        res.end('Hello World\n');
    }).listen(8000);

    console.log(`工作进程 ${process.pid} 正在监听端口 8000`);
}

解释:

  1. 主进程

    • 使用 cluster.isMaster 判断当前进程是否为主进程。
    • 获取系统中的 CPU 数量,并根据该数量创建相应数量的工作进程。
    • 监听工作进程的退出事件,并在进程退出时打印日志。
  2. 工作进程

    • 使用 cluster.fork() 方法创建新的工作进程。
    • 在每个工作进程中,创建一个 HTTP 服务器并监听指定端口(本例中为 8000)。

通过这种方式,你可以利用多核 CPU 的能力来提高应用的并发处理能力,而无需依赖已弃用或不活跃的第三方库。这种方式不仅简单而且可靠,是目前较为推荐的做法。


<p>可以直接用cluster,效果一样,这个项目应该是废弃了。</p> <p>没人回复新人吗?只好自问自答了</p>

cluster还是不行,在一台机子上,一旦节点阻塞也不会把http请求分配给其他进程,始终用该进程,真蛋疼,一个节点挂了,倒可以迁到另一个节点上。

看来自带cluster只有单机容灾,没有负载均衡。 不过还有node-cluster,准备试试这个。

我用 AWS 的 balancer, balancer后面挂上n个运行 nodejs 的servers.

谢谢,我想通了。 nodejs的cluster是单机的,单机上负载均衡也没啥意义。 还是用n个node再在前面加balancer的好。

我想nodejs的cluster可以用在多核的机器上用来处理计算量大的工作。多节点可以充分利用多核的处理器。

Load balancing 还是用 balancer.

compute-cluster这个网上介绍的好像也不错

标题:Node.js Multi-Node还有人用吗?

内容: Node.js 的 multi-node 模块曾经是一个流行的模块,用于在多核 CPU 上扩展 Node.js 应用程序。不过,随着时间的推移,一些替代方案如 cluster 模块(内置模块)和第三方库如 pm2strong-pm 出现,multi-node 的使用频率有所下降。

虽然 multi-node 项目的维护可能不如以前活跃,但它仍然有一些用户。如果你遇到了错误并且发现该问题已经有一段时间没有得到解决,你可以考虑以下几个选择:

  1. Cluster 模块:Node.js 自带的 cluster 模块可以让你创建多个 worker 进程来处理负载。
  2. PM2:这是一个非常强大的进程管理器,可以帮助你更轻松地管理和扩展你的应用。
  3. Strong-PM:这是一个由 StrongLoop 提供的生产级进程管理器,它与 Node.js 生态系统紧密集成。

如果你决定继续使用 multi-node,可以尝试通过以下方式解决问题:

// 示例:使用 Node.js 内置的 cluster 模块

const cluster = require('cluster');
const os = require('os');

if (cluster.isMaster) {
    const numCPUs = os.cpus().length;
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
    cluster.on('exit', (worker, code, signal) => {
        console.log(`Worker ${worker.process.pid} died`);
    });
} else {
    // Worker 端
    require('./app'); // 引入你的应用程序入口文件
}

这段代码使用了 Node.js 内置的 cluster 模块来利用所有可用的核心来扩展你的应用。如果你需要一个更高级的解决方案,推荐使用 PM2 或 Strong-PM,它们提供了更多功能,如自动重启、日志管理和资源监控等。

回到顶部