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

好,所以我有一个想法,我想仔细阅读,但在此之前,我需要充分了解一些事情。

首先,我认为即将开始使用这个系统的方式是有3个服务器,如下所述:

第一台服务器将是我的networking前端 ,这是服务器将监听连接和响应客户端,这台服务器将拥有8核心和16GB RAM。

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

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

我的第一个问题是:

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

我的第二个问题是:

  • 有没有一种系统可以放入我的应用程序框架中,这样我就可以与其他内核进行通信并传递消息来保存I / O。

最后一个问题:

  • 有没有什么系统可以用来帮助将内容从我的存储服务器移动到前端服务器上的请求,尽可能less的开销,速度是一个问题,因为我们将有500多个客户端同时下载和上传倍。

我终于说服了我的老板,node.js是非常快的,它是最新的编程技术,我们应该为我们的Intranet系统投资一个平台,但他已经要求详细的文档说明如何在当前的硬件有可用的。

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

尝试查看一个多核心服务器pipe理器node.js 集群模块。

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

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

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

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

当谈到工人的信息,我不能真正帮助你。 但是你最好的select也是集群。 也许会有一些function在未来的所有集群工作者之间提供“核心间”消息(不知道集群的路线图,但似乎是一个想法)。

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

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