好的,所以我想知道我想要仔细阅读,但在此之前,我需要完全了解一些事情。
首先,我认为我要继续使用这个系统的方法是拥有3个服务器,如下所述:
第一台服务器将是我的网络前端,这是将监听连接并响应客户端的服务器,此服务器将具有8个核心和16GB拉姆。
第二台服务器将是数据库服务器,非常自我解释,连接到主机并设置/获取数据。
第三台服务器将成为我的存储服务器,这将是存储可下载文件的位置。
我的第一个问题是:
我的第二个问题是:
最后一个问题:
我终于说服了我的雇主,node.js速度非常快,是最新的编程技术,我们应该为我们的Intranet系统投资一个平台,但他已经要求详细记录如何在这个平台上进行扩展。我们现有的硬件。
答案 0 :(得分:11)
在我的前端服务器上,我有8个 核心,什么是最好的扩展方式 节点,以便分配负载 穿过核心?
尝试查看作为多核服务器管理器的node.js cluster模块。
答案 1 :(得分:3)
首先,我不会将您建议的设置描述为“缩放”,它更像是“传播”。您只有一个服务器请求服务器。如果您将来添加更多应用服务器,那么您将遇到缩放问题。
我知道node.js是单线程的,这意味着它只能使用单个核心。不是我在如何/如果你可以扩展它的专业领域,将把这部分留给别人。
我建议NFS将存储服务器上的目录挂载到app服务器。 NFS的开销相对较低。然后,您可以像访问本地文件一样访问这些文件。
答案 2 :(得分:3)
关于你的第一个问题:使用cluster(我们已经在生产系统中使用它,就像魅力一样)。
说到工作人员的消息,我真的无法帮助你。但你最好的选择也是集群。也许会有一些功能在未来为所有集群工作者提供“核心间”消息传递(不知道集群的路线图,但这似乎是一个想法)。
对于你的第三个要求,我会使用像NFS这样的低开销协议,或者(如果你在基础设施方面真的很疯狂)使用高速SAN后端。
另一个建议:使用MongoDB作为数据库后端。您可以从低端硬件开始,使用MongoDB的分片/复制集功能轻松扩展数据库实例(如果这是某种要求)。