我不是node.js主控,因此我想对此有更多的观点。使用集群和节点webworker构建高性能node.js应用程序
我正在创建一个HTTP node.js Web服务器,它不仅必须处理大量的并发连接,而且还要处理长时间运行的作业。默认情况下,node.js在一个进程上运行,并且如果有一段代码需要很长时间才能执行任何后续连接,则必须等到代码结束之前连接的操作。
例如:
var http = require('http');
http.createServer(function (req, res) {
doSomething(); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
所以我想用node-webworker库运行所有在单独的线程的长时间运行的工作:
var http = require('http');
var sys = require('sys');
var Worker = require('webworker');
http.createServer(function (req, res) {
var w = new Worker('doSomething.js'); // This takes a long time to execute
// Return a response
}).listen(1337, "127.0.0.1");
而且使整个事情更高性能的,我认为也使用cluster为每个CPU内核创建一个新的节点进程。
通过这种方式,我希望通过不同的进程来平衡客户端连接与cluster
(如果我在四核上运行它,假设有4个节点进程),然后在单独的线程上使用node-webworker
执行长时间运行的作业。
这个配置有什么问题吗?
最后更新2年以前 –