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

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

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

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

实际的结构

我想就如何开发服务器端的architetture,以便它可以扩展的一些build议。

我知道的唯一的解决scheme是使用多个服务器运行相同的应用程序将共享相同的内存(Redis服务器)。

nodeJS有可能将这些types的请求的pipe理分割成多个服务器吗? 也许一个或多个服务器为每种types的请求?

目前我正在使用:

  • 的NodeJS
  • Redis的
  • MySQL的
  • performance
  • Socket.io

在此先感谢,你能推荐一些关于这个问题的书吗?

       

网上收集的解决方案 "服务器端应用程序的可伸缩性,最好的方法"

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

我认为在不同的应用程序上分割API和网站是一个好主意。 如果您决定在一台机器上运行多个node.js应用程序,请尝试使用pm2http://pm2.keymetrics.io/ )。 你可能可以把你的API分成一堆小应用程序 – 叫微服务体系结构。 我个人不喜欢微服务的方法,你可以检查网站的优点和缺点。

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