マルチコア コンピューター上の Node.js
Node.js の現在の人気は、単一のプロセスのみを対象としているのではないかという疑念を引き起こしています。スレッドは最適化されていますが、マルチコア CPU やマルチ CPU サーバーにどのように拡張できるのでしょうか?
シングルスレッドは本当にパフォーマンスを制限しますか?
シングルスレッド サーバーでも十分高速ですが、高負荷ではマルチコア プロセッサを最大限に活用する必要があります。タスクの並列化は、アプリケーションの高速化における現在のトレンドです。
Node.js とマルチコアの組み合わせ
Node.js はマルチコア コンピューターに対応します。これは次のメソッドを通じて実装されます。
1. プロセス分割
画像エンコードなどの負荷の高いコンピューティング タスクの場合、Node.js は子プロセスを起動したり、他のワーカープロセス メッセージを送信します。この設計では、1 つのスレッドがイベントのフローを管理し、N 個のプロセスが重い計算タスクを実行して、他の 15 個の CPU を最大限に活用します。
2. マルチサーバー並列処理
Web サービスをスケーリングするには、サーバーごとに 1 つのコアを使用し、リクエスト トラフィックを分割して複数の Node.js サーバーを 1 台のコンピューター上で実行する必要があります。 。これにより、優れた CPU 親和性が提供され、コア数の増加に応じてスループットがほぼ直線的に拡張されます。
クラスター モジュールを使用して Web サービスのスループットを拡張する
v6.0.X 以降、Node.js にはクラスター モジュールが直接含まれているため、セットアップが簡単になります複数のノード 単一のポートでリッスンできるワーカー プロセス。これは、npm 経由で利用できる古い learnboost "cluster" モジュールとは異なることに注意してください。
ワーカー プロセスは新しい接続を受け入れるために競合し、負荷が最も少ないプロセスが勝つ可能性が高くなります。これはうまく機能し、マルチコア マシン上でスループットを適切に拡張します。
負荷分散の最適化
クラスター モジュールの使用に加えて、次の手順もマルチコアの負荷分散をさらに改善するのに役立ちます。
以上がシングルスレッド環境である Node.js は、マルチコア システム上でどのようにスケーラビリティを実現するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。