2017-06-16 46 views
1

对于过去的一年,我已经开始使用nodejs开发大约40个独立的web应用程序(每个都使用express + socket.io运行它自己的带有自定义端口的服务器)。真正巴格斯我是PM2进程列表有一个垂直滚动)))多个nodejs服务器还是单个?

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

回答

0

有运行多个节点的服务器,实际上,当谈到微服务架构越多,你打破,好没有问题。这有很多优点和缺点,你需要弄清楚缺点是否会影响你的系统,而不是你愿意牺牲的。我认为当你开始时你不知道如何遵循微服务体系结构,但由于你的应用程序现在分布在40多种服务中,以下是一篇文章,可能会让你对正确管理它有所帮助。

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

0

您可以在一个过程中的NodeJS启动几家快递和socket.io情况下,如果你愿意的话,像这样(根据快递Hello World示例):

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进程处理,则显然EA他们中的更多CPU时间和高负载其中之一不会影响其他人。
  2. 日志 - 如果几个应用是由一个过程的NodeJS处理,则需要区分哪些人莫名其妙地输出。否则,输出将变得混乱。
  3. Аault宽容 - 如果一个进程的NodeJS处理多个应用程序,然后在一个应用程序中的关键失败的情况下,所有的人都会同时粉碎。
  4. 安全 - 可能是在一个应用中的一些安全问题,可能会影响一个过程的NodeJS处理其他应用程序。
0

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