4

2 つの質問があります。

  1. process.send および worker.send 関数はブロックしていますか? そして、このタイプのプロセス間通信のパフォーマンスは?

  2. マスターが更新をワーカーにプッシュし、ワーカーが集約データをマスターにプッシュするクラスターがあります。ただし、マスターから最新のデータが必要な特定のクエリがあります。リクエストがワーカーに届くと、「レスポンス」オブジェクトを保存し、次に process.send() を実行してマスターに連絡して最新のデータを取得し、マスターでデータを取得してから worker.send を実行します() データを返送します。responseId をやり取りして、リクエストが最終的に戻ってきたときに、どのレスポンスに書き戻して end() 関数を呼び出すかを把握できるようにします。

プロセス間でこのような同期呼び出しを行うより良い方法はありますか? 頻繁に発生するわけではありませんが、発生している他のすべてのノンブロッキング リクエストに関して、パフォーマンスにどのような影響があるのでしょうか? それは他のすべてを保持しますか?これが最も効率的な方法ですか?

4

1 に答える 1

0

process.send および worker.send 関数がブロックされていますか

いいえ。

そして、このタイプのプロセス間通信のパフォーマンスはどのくらいですか

JSONのシリアライズ・デシリアライズとほぼ同じ。データ転送は OS によって処理され、非常に高速です。

プロセス間でこのような同期呼び出しを行うより良い方法はありますか?

ノードにはありません。

あまり頻繁に発生するわけではありませんが、発生している他のすべての非ブロッキング要求に関して、これからどのようなパフォーマンスへの影響が生じるでしょうか

重要ではありません。これは、データベースにクエリを実行するようなものです... データベースがその仕事を行っている間、Web プロセスは他の要求に自由に応答できます。ここでは同じプリンシパル (マスター -> ワーカー)。

于 2016-04-01T05:33:09.067 に答える