多个nodejs服务器还是单个?

时间:2017-06-16 07:44:45

标签: node.js sockets server

对于过去的一年,我使用nodejs开始了大约40个独立的网络应用程序(每个都使用express + socket.io运行自己的服务器和自定义端口)。真正让我烦恼的是,pm2进程列表有一个垂直滚动)))

问题是:运行这么多节点服务器是否正常或有更好的方法?

3 个答案:

答案 0 :(得分:0)

运行多个节点服务器没有问题,事实上,当涉及微服务架构时,分解越多越好。这有很多优点和缺点,你需要弄清楚缺点是否会影响你的系统,而不是你愿意牺牲。我假设您刚开始时不知道如何遵循微服务架构,但由于您的应用程序现在已经分布在40多种服务中,因此以下文章可能会让您深入了解如何正确管理它。

https://derickbailey.com/2016/12/12/making-the-quantum-leap-from-node-js-to-microservices/

答案 1 :(得分:0)

如果您愿意,可以在一个NodeJS进程中启动几个express和socket.io实例,如下所示(基于Express Hello世界示例):

const express = require('express');

// First app
const app1 = express();

app1.get('/', function (req, res) {
  res.send('Hello World!');
});

app1.listen(3000, function () {
  console.log('Example app1 listening on port 3000!');
});

// Second app
const app2 = express();

app2.get('/', function (req, res) {
  res.send('Hello World 2!');
});

app2.listen(3001, function () {
  console.log('Example app2 listening on port 3001!');
});

但有几个方面需要考虑:

  1. 性能 - 如果每个应用程序都由一个单独的NodeJS进程处理,那么显然每个应用程序都有更多的CPU时间,其中一个高负载不会影响其他人。
  2. 记录 - 如果一个NodeJS流程处理多个应用程序,您需要以某种方式区分哪些应用程序。否则输出会很混乱。
  3. Аaulttolerance - 如果一个NodeJS进程处理多个应用程序,那么如果一个应用程序出现严重故障,所有这些应用程序将同时崩溃。
  4. 安全性 - 可能一个应用中的某些安全问题可能会影响一个NodeJS流程处理的其他应用。

答案 2 :(得分:0)

如果它们都是独立的,那么你必须创建单独的服务器。但如果他们彼此交谈(我认为他们是通过socket.io相互交谈)那么你可以使用RPC调用。他们是像grpc(谷歌)和tchannel(优步)这样的lib。我希望他们能解决你的问题。