在nodejs中执行CPU绑定任务的方法

我正在使用nodejs作为解码GET参数并以某种编码格式返回数据的Web服务器。 解码/编码是使用nodejs的encryption模块完成的,这似乎是同步的。 虽然服务单个请求所花的时间足够快,但阻止事件循环使服务在并发性方面performance不佳。

我的要求很简单,使事件循环之外的编码/解码function。

  1. 单独的进程(child_process或集群)

这可以是一个单独的过程,只是为了这个目的,但是由于编码/解码将在subprocess中被阻塞,这将停止subprocess接收新消息,即当两个string被编码为subprocess也将是单线程的。

  1. 为每个请求分开线程(threads-a-gogo或fiber或node-webworker)

为每个请求创build一个单独的线程来执行编码/解码操作,但是没有一个模块看起来像预期的那样工作,即threads-a-gogo不通过npm安装,光纤没有在运行时创build单独的线程(),node-webworker 不工作 。

有人遇到过类似的问题,或者有一些方法可以通过简单的消息传递轻松地在nodejs中创build线程。

这是内置到节点的subprocess。 这里的文档:

http://nodejs.org/api/child_process.html#child_process_child_send_message_sendhandle

你也可以使用集群:

http://nodejs.org/api/cluster.html#cluster_cluster_fork_env

与集群,它会像这样工作:

if (cluster.isMaster) { var worker = cluster.fork(); worker.send('encodeThisString'); } else if (cluster.isWorker) { process.on('message', function(msg) { var encrypted = crypto.doSomeEncryption(msg); process.send(encrypted); }); }