8

GETパラメーターをデコードし、エンコードされた形式でデータを返すWebサーバーにnodejsを使用しています。デコード/エンコードは、同期しているように見えるnodejsのcryptoモジュールを使用して行われます。1 つの要求を処理するのにかかる時間は十分に高速ですが、イベント ループをブロックすると、サービスの同時実行性が低下します。

私の要件は単純です。エンコード/デコード機能をイベントループの外側にします。

  1. 別のプロセス (child_process または cluster)

これは、この目的のためだけに別のプロセスにすることもできますが、エンコード/デコードが子プロセスでブロックされるため、子プロセスが新しいメッセージを受信するのを停止します。つまり、2 つの文字列が子プロセスとしてエンコードされる状況は決してありません。シングルスレッドにもなります。

  1. リクエストごとに個別のスレッド (threads-a-gogo または fiber または node-webworker)

エンコード/デコード操作を実行するリクエストごとに個別のスレッドを作成しますが、どのモジュールも期待どおりに動作しないようです。つまり、threads-a-gogo は npm を介してインストールされず、ファイバーは実行時に個別のスレッドを作成しませんでした。 ()、node-webworkerが機能していません

誰かが同様の問題に直面したことがありますか、または単純なメッセージの受け渡しで nodejs でスレッドを簡単に作成する方法がありますか。

4

1 に答える 1

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);
  });
}
于 2013-03-10T03:56:51.620 に答える