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

时间:2016-02-22 12:27:42

标签: node.js scalability server-side

我正在编写一个服务器端应用程序,它将管理来自:

的请求
  • 游戏客户端
  • 网站(HTTP请求)
  • API

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

Actual architetture

我想就如何开发服务器端架构提出一些建议,以便它可以扩展。

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

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

目前我正在使用:

  • 的NodeJS
  • Redis的
  • MySQL的
  • 快速
  • Socket.io

先谢谢,你能推荐一些关于此事的书吗?

1 个答案:

答案 0 :(得分:1)

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

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

此外,如果您将应用程序(或一堆应用程序)部署在不同的虚拟/ phisycal计算机上(通常在生产中),您可以使用haproxy进行平衡和 容错(http://www.haproxy.org/)。