从Node.js的主事件循环中卸载繁重的计算

pen*_*tur 5 node.js

对于某些用户请求,我需要进行一些繁重的计算(大约需要100毫秒的时间);而且,当然,我不想在节点的主事件循环中执行这些操作,以免阻止其他请求得到处理。

解决此问题的最明显但绝对不是最干净的方法是将计算卸载到另一个程序,然后异步等待结果。

有什么方法可以在不离开节点进程(并实现进程间通信)的情况下进行操作?例如这样的事情:

var compute = function (input) {
    var i,
        result = input;
    for (i = 0; i < 1000000; i++) {
        result = md5(result);
    }
}

var controller = function (req, res) {
    offload(compute, req.params.input, function(result) {
        res.send(result);
    });
}
Run Code Online (Sandbox Code Playgroud)

pen*_*tur 4

我找到了一个compute-cluster模块,它似乎完全是为了我的目标而设计的。它产生子进程,并通过 IPC 进行通信(没有浪费套接字)。