【问题标题】:Scaling Node.JS across multiple cores / servers跨多个核心/服务器扩展 Node.JS
【发布时间】:2011-07-20 20:54:34
【问题描述】:

好的,所以我有一个想法,我想仔细阅读,但在我这样做之前,我需要完全理解一些事情。

首先,我认为我要继续使用这个系统的方式是拥有 3 个服务器,如下所述:

第一台服务器将是我的网络前端,这是将监听连接并响应客户端的服务器,该服务器将有 8 个内核和 16GB公羊。

Second Server 将是 Database Server,非常不言自明,连接到主机并设置/获取数据。

第三台服务器将是我的存储服务器,用于存储可下载文件。

我的第一个问题是:

  • 在我的前端服务器上,我有 8 个内核,扩展节点以使负载分布在内核之间的最佳方法是什么?

我的第二个问题是:

  • 是否有一个系统可以放入我的应用程序框架中,让我可以与其他内核通信并传递消息以节省 I/O。

最后一个问题:

  • 是否有任何系统可以帮助我将内容从我的存储服务器移动到前端服务器上的请求,并且开销尽可能少,这里的速度是一个问题,因为我们将有 500 多个客户端下载和上传同时在高峰时段。

我终于说服了我的雇主,node.js 速度非常快,并且它是最新的编程技术,我们应该为我们的 Intranet 系统投资一个平台,但他要求提供有关如何在整个我们目前可用的硬件。

【问题讨论】:

    标签: node.js scalability


    【解决方案1】:

    关于你的第一个问题:使用cluster(我们已经在生产系统中使用它,就像一个魅力)。

    谈到工人消息传递,我真的无法帮助你。但你最好的选择也是集群。也许将来会有一些功能在所有集群工作人员之间提供“内核间”消息传递(不知道集群的路线图,但这似乎是一个想法)。

    对于您的第三个要求,我会使用像 NFS 这样的低开销协议,或者(如果您在基础设施方面真的很疯狂)高速 SAN 后端。

    另一个建议:使用 MongoDB 作为您的数据库后端。您可以从低端硬件开始,然后使用 MongoDB 的分片/复制集功能轻松扩展您的数据库实例(如果这是某种要求)。

    【讨论】:

    • 像 redis 这样的内存数据库非常适合保持进程之间的共享状态。
    【解决方案2】:

    在我的前端服务器上,我有 8 个 核心,扩展的最佳方式是什么 节点,以便分配负载 跨核心?

    尝试查看 node.js cluster 模块,它是一个多核服务器管理器。

    【讨论】:

      【解决方案3】:

      首先,我不会将您提出的设置描述为“缩放”,它更像是“传播”。您只有一个应用服务器来处理请求。如果您将来添加更多应用服务器,那么您将遇到扩展问题。

      我了解 node.js 是单线程的,这意味着它只能使用单核。不是我的专业领域关于如何/如果你可以扩展它,将把这部分留给其他人。

      我建议 NFS 将存储服务器上的目录挂载到应用服务器。 NFS 的开销相对较低。然后您可以像访问本地文件一样访问这些文件。

      【讨论】:

        猜你喜欢
        • 2015-08-29
        • 2015-07-28
        • 2015-01-09
        • 1970-01-01
        • 2015-09-11
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 2012-10-12
        相关资源
        最近更新 更多