服务器端应用程序的可扩展性,最佳方法

Scalability of server-side application, best approach

我正在编写一个服务器端应用程序,它将管理来自以下方面的请求:

到目前为止,我对每种类型的请求只使用一个 (NodeJS) 应用程序,问题是随着用户群的增长,这种方法会产生瓶颈。

我想要一些关于如何开发服务器端架构以使其具有可扩展性的建议。

据我所知,唯一的解决方案是使用具有相同应用程序的多个服务器 运行,这将共享相同的内存(Redis 服务器)。

在nodeJS中是否可以将这些类型的请求的管理拆分到多个服务器中?每种类型的请求可能有一台或多台服务器?

目前我正在使用:

先谢谢了,你能推荐一些这方面的书吗?

在一台机器上处理多核架构的强大功能,您可以使用 node.js Cluster 模块 (https://nodejs.org/api/cluster.html)。

我认为将 API 和 Website 分开放在不同的应用程序上是个好主意。如果您决定在一台机器上 运行 多个 node.js 应用程序,请尝试使用 pm2 (http://pm2.keymetrics.io/)。您可能会将 API 拆分为一堆小型应用程序 - 这称为微服务架构。我个人不喜欢微服务方法,您可以在网上查看优缺点。

此外,如果您将应用程序(或一组应用程序)部署在不同的 virtual/phisycal 机器上(这在生产中很常见),您可以使用 haproxy 进行平衡和 容错 (http://www.haproxy.org/).