我使用nodejs作为Web服务器,它解码GET参数并以某种编码格式返回数据。使用nodejs的加密模块完成解码/编码,这似乎是同步的。虽然服务单个请求所花费的时间足够快,但阻止事件循环使得服务在并发性方面表现不佳。
我的要求很简单,在事件循环之外制作编码/解码功能。
这可以是仅用于此目的的单独进程,但由于编码/解码将在子进程中阻塞,这将阻止子进程接收新消息,即永远不会出现编码两个字符串的情况因为子进程也是单线程的。
为每个请求创建一个单独的线程来执行编码/解码操作,但是没有一个模块似乎按预期工作,即线程-a-gogo不能通过npm安装,光纤没有创建单独的线程在run(),node-webworker not working上。
是否有人遇到类似的问题,或者是否有某种方法可以通过简单的消息传递在nodejs中轻松创建线程。
答案 0 :(得分:1)
这内置于节点的子进程中。文档:
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);
});
}