跨多个核心/服务器扩展Node.JS

时间:2011-03-22 21:43:49

标签: node.js scalability

好的,所以我想知道我想要仔细阅读,但在此之前,我需要完全了解一些事情。

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

第一台服务器将是我的网络前端,这是将监听连接并响应客户端的服务器,此服务器将具有8个核心和16GB拉姆。

第二台服务器将是数据库服务器,非常自我解释,连接到主机并设置/获取数据。

第三台服务器将成为我的存储服务器,这将是存储可下载文件的位置。

我的第一个问题是:

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

我的第二个问题是:

  • 那里有一个系统我可以进入我的应用程序框架,这将允许我与其他内核通信并传递消息以保存I / O.

最后一个问题:

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

我终于说服了我的雇主,node.js速度非常快,是最新的编程技术,我们应该为我们的Intranet系统投资一个平台,但他已经要求详细记录如何在这个平台上进行扩展。我们现有的硬件。

3 个答案:

答案 0 :(得分:11)

  

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

尝试查看作为多核服务器管理器的nod​​e.js cluster模块。

答案 1 :(得分:3)

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

我知道node.js是单线程的,这意味着它只能使用单个核心。不是我在如何/如果你可以扩展它的专业领域,将把这部分留给别人。

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

答案 2 :(得分:3)

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

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

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

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