【问题标题】:Scalability of server-side application, best approach服务器端应用程序的可扩展性,最佳方法
【发布时间】:2016-06-03 21:09:41
【问题描述】:

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

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

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

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

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

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

目前我正在使用:

  • NodeJS
  • Redis
  • MySQL
  • 快递
  • Socket.io

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

【问题讨论】:

  • 目前我正在使用单个 nodeJS 应用程序来处理所有类型的请求,但问题是将来重新设计此架构可能会很困难。

标签: node.js scalability server-side


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-12-11
    • 2013-06-26
    相关资源
    最近更新 更多