多个nodejs服务器还是单个?
问题描述:
对于过去的一年,我已经开始使用nodejs开发大约40个独立的web应用程序(每个都使用express + socket.io运行它自己的带有自定义端口的服务器)。真正巴格斯我是PM2进程列表有一个垂直滚动)))多个nodejs服务器还是单个?
的问题是:这是正常运行这么多节点服务器,或者有更好的办法?
答
有运行多个节点的服务器,实际上,当谈到微服务架构越多,你打破,好没有问题。这有很多优点和缺点,你需要弄清楚缺点是否会影响你的系统,而不是你愿意牺牲的。我认为当你开始时你不知道如何遵循微服务体系结构,但由于你的应用程序现在分布在40多种服务中,以下是一篇文章,可能会让你对正确管理它有所帮助。
https://derickbailey.com/2016/12/12/making-the-quantum-leap-from-node-js-to-microservices/
答
您可以在一个过程中的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!');
});
但有几个方面来考虑:
- 性能 - 如果每个应用程序是由一个单独的NodeJS进程处理,则显然EA他们中的更多CPU时间和高负载其中之一不会影响其他人。
- 日志 - 如果几个应用是由一个过程的NodeJS处理,则需要区分哪些人莫名其妙地输出。否则,输出将变得混乱。
- Аault宽容 - 如果一个进程的NodeJS处理多个应用程序,然后在一个应用程序中的关键失败的情况下,所有的人都会同时粉碎。
- 安全 - 可能是在一个应用中的一些安全问题,可能会影响一个过程的NodeJS处理其他应用程序。
答
如果他们都是独立的,那么你必须创建单独的服务器。但是如果他们正在互相交谈(我认为他们正在通过socket.io彼此交谈),那么你可以使用RPC调用。他们是像grpc(谷歌)和tchannel(优步)一些*。我希望他们能解决你的问题。