Javascript 在一个节点进程中运行多个httpServer或在自己的节点进程中运行每个服务器

Javascript 在一个节点进程中运行多个httpServer或在自己的节点进程中运行每个服务器,javascript,performance,node.js,ports,Javascript,Performance,Node.js,Ports,我想找出更好的解决办法 我在我的节点应用程序中运行两台http服务器,服务器1位于端口3000,服务器2位于端口3001。服务器1负责主逻辑和数据库处理,而服务器2负责处理文件请求 当我使用节点myApp.js启动我的应用程序时,两台服务器都会启动并侦听它们的端口 /* *Fire Up the Servers */ http.createServer(app).listen(3000, function(){ console.log('HTTP Express server liste

我想找出更好的解决办法

我在我的节点应用程序中运行两台http服务器,服务器1位于端口3000,服务器2位于端口3001。服务器1负责主逻辑和数据库处理,而服务器2负责处理文件请求

当我使用节点myApp.js启动我的应用程序时,两台服务器都会启动并侦听它们的端口

/*
 *Fire Up the Servers
 */
http.createServer(app).listen(3000, function(){
  console.log('HTTP Express server listening on port 3000');
});

http.createServer(fileserver).listen(3001, function(){
  console.log('HTTP Fileserver is listening on port 3001');
});
现在我的问题是:如果我为每台服务器编写一个自己的节点进程,这样我就必须运行node myApp.js启动服务器1,监听端口3000,然后运行node myFileserver.js监听端口3001,有没有人知道这会有什么不同

性能有什么不同吗? 或者有什么提示可以让我读到吗

问候,,
Martin取决于代码的其余部分。如果两台服务器都有共享状态,最好在同一进程中启动它们

如果没有共享状态,最好将它们放在单独的进程中,这样一个进程的执行流就不会影响另一个进程对服务器的请求数。如果一个是IO绑定的,而另一个是cpu密集型的,则尤其如此


另外,如果您在同一进程中启动它们,为什么不在同一端口上同时执行这两项操作?

这听起来像是两个独立的应用程序。我认为你不应该一开始就把它们写在一起。谢谢!我有不同的端口,因为它们使用不同的域。端口3001上的文件服务器处理诸如files.mydomain.com之类的请求。端口3000上的另一台服务器响应域mydomain.com的请求。我在两者前面都有一个代理(Node.js proxy server),它处理头请求并将它们转移到特定服务器正在侦听的适当端口。我这样做是因为我想更灵活地处理我的文件并获得更好的性能,因为一旦我在一台服务器和一个端口上同时使用了这两个端口,我就意识到在文件服务过程中会对我的应用程序产生一些负面影响。共享状态是什么意思?我认为他们没有。共享状态意味着有两条路由使用的变量吗?如果它们在不同的域上,那么你肯定应该选择不同的进程。分离过程的开销非常小,但结果是非常干净地分离了关注点。好的,谢谢。没有共享的变量。它们完全分开运行。我现在刚试过,运行了两个不同的进程。当然,代码会变得更干净,我认为性能会更好一些,但这只是主观的,我无法证明这一点。