node.js - Sails.js (Node.js) 服务器架构、扩展和性能

标签 node.js server architecture sails.js scaling

我想创建 Sails.js (Node.js) 服务器应用程序,它将为单页应用程序提供 API。该服务器将由多个模块组成:

  • 用户管理
  • 论坛
  • 聊天
  • 管理图形用户界面
  • 内容管理
  • 支付网关
  • ...

所有这些模块将共享一个数据库。服务器必须能够处理尽可能多的请求和 Web 套接字。简洁的架构和性能是我的主要目标。

我的问题:

  1. 我应该创建在多个端口上运行的多个服务器吗?我的意思是,内容管理模块的一台服务器。论坛管理模块的另一个服务器。
  2. 或者只创建一个大型通用服务器,它由多个单独的模块(Sails.js 中的钩子(Hook))组成并在一个端口上运行,是不是更好?这种情况下服务器的性能会下降吗?

我正在考虑垂直扩展一台大型通用服务器,在单端口上运行 pm2 。或者水平扩展 Node.js 并将服务器拆分为多个较小的服务器更好?

我是 Node.js 新手,所以我很感激任何建议。

最佳答案

我认为这实际上取决于项目的规模。

对于非常简单的事情,没有真正的理由超越单一但可靠的服务器,是吗?

但是,对于具有资源密集型后端以及大量用户和流量的更广泛的项目,您可能需要根据要求拆分后端/前端方面。

在这种情况下,您可能有一个(或多个)服务器来处理特定的管理请求或例程,然后让客户端/用户 API 通过负载均衡器运行并分布在多个区域的多个服务器上,或者将其进一步分解为自动扩展组,以适应流量的波动。

还值得注意的是,这确实适合更高流量或资源使用量,因为您将服务器基础设施专用于此目的,对于不经常使用的小型应用程序,然后从一开始就将其分解为微服务并按运行时计费,而不是专用基础设施使用可能对我来说更有意义。您可以查看 AWS API Gateway 和 Lambda 服务,了解更多相关信息(我不以任何方式隶属于 AWS,我只是欣赏他们在那里所做的努力)。

关于node.js - Sails.js (Node.js) 服务器架构、扩展和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337753/

相关文章:

node.js - ng new my-app 意外 token =

javascript数组作为字符串列表(保留引号)

python - 在 Docker 中运行 Jupyter Notebook

c# - 在静态类中使用非托管资源

mysql - 是否可以使用 sequelize 来订购中间关系表?

javascript - 当对象在多个其他对象中时,console.log 返回 [Object]

linux - 将/proc/sys/vm/drop_caches重置为默认值0

php - 更新 mysql 时区并更改所有 TIMESTAMPS 列

architecture - 进入应用程序架构师级别

C# MVC 与 ASP.NET MVC 的区别?