服务器端应用程序的可伸缩性,最好的方法
我正在编写一个服务器端应用程序来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应用程序,请尝试使用pm2
( http://pm2.keymetrics.io/ )。 你可能可以把你的API分成一堆小应用程序 – 叫微服务体系结构。 我个人不喜欢微服务的方法,你可以检查网站的优点和缺点。
此外,如果您在不同的虚拟/ phisycal计算机上(这是生产中常见的)部署您的应用程序(或一堆应用程序),您可以使用haproxy
平衡和容错( http://www.haproxy.org/ )。