javascript - Node.js:在同一台服务器上运行多个应用程序
问题描述
我想在同一台服务器上运行多个 Node.js (Express) 应用程序。我知道两种不同的方法:
使用反向代理将请求重定向到侦听不同端口的应用程序。例如
https://website.com/app1 --> https://localhost:1001 https://website.com/app2 --> https://localhost:1002
使用 express 中间件在同一端口上运行应用程序(在同一端口上运行多个节点(Express)应用程序):
app
.use('/app1', require('./app1/index').app)
.use('/app2', require('./app2/index').app)
.listen(8080);
这两种方法的优缺点是什么?
解决方案
以 express 方式运行它们的最大缺点是两个应用程序都将共享 Node 资源。一台服务器将同时处理这两个请求,因此它的所有资源(内存、CPU,尤其是单线程的)都将被共享。这也意味着引入到一个应用程序的任何安全问题现在都会影响两个应用程序。
从好的方面来说,如果你的物理服务器很小,你只有一组开销,即使那个单节点进程在 2 个应用程序之间共享它的资源,你的物理服务器也只需要运行一个节点进程。
最理想的情况是,每个应用程序都应该有自己的 Node 进程。它将关注点、安全性、包、资源分开。在部署方面,它允许您单独扩展它们,使其更易于调试。
基本上,除非您有充分的理由不这样做,否则您应该将它们分成 2 个节点应用程序。
推荐阅读
- python - python中的分数背包(无排序)
- c - 访问嵌套结构以声明变量
- java - 如何在 Java 中随机选择方法
- ruby-on-rails - 为什么当我实时推送 master.key 时我的 Heroku 应用程序崩溃?
- google-sheets - 谷歌表格公式获取最后 5 行的百分比变化
- java - Apache Flink:提交 Flink 作业时出现 NoSuchMethodError
- python - 无法使用 Selenium 输入文本(电子邮件)
- android - Checkmarx 找到了 android 项目中没有的库
- spring - Spring Boot 找不到休眠验证器
- python - 使用 Telethon (Python) 无法通过 ChannelInvalidError(由 ForwardMessagesRequest 引起)