NodeJS Web サイトには、次のように記載されています。強調は私です。
Node.js は、Chrome の JavaScript ランタイム上に構築されたプラットフォームであり、高速でスケーラブルなネットワーク アプリケーションを簡単に構築できます。Node.js はイベント ドリブンのノンブロッキング I/O モデルを使用しているため、軽量で効率的であり、分散デバイス間で実行されるデータ集約型のリアルタイム アプリケーションに最適です。
私は NodeJS が大好きですが、Python、Java、さらには PHP などの既存のテクノロジーと比較して、なぜ NodeJS がスケーラブルなアプリケーションに適しているのかわかりません。
私が理解しているように、JavaScript ランタイムは常に CPU 内の単一のスレッドとして実行されます。ただし、IO はおそらく、カーネルによって提供されるスレッド プールに依存する可能性のある基になるカーネル メソッドを使用します。
したがって、答える必要がある実際の質問は次のとおりです。
- すべての JS コードが単一のスレッドで実行されるため、NodeJS は IO が少なく計算量が多いアプリケーションには適していません。
- nodejs を使用して Web アプリケーションを作成していて、それぞれが 100 ミリ秒を必要とする純粋な計算を実行する 100 の開いている接続がある場合、そのうちの少なくとも 1 つが終了するのに 10 秒かかりますか?
- マシンに 10 個のコアがあり、nodeJS インスタンスを 1 つだけ実行している場合、他の 9 個の CPU はアヒルに座っていますか?
これらの場合に、他のテクノロジーがどのように NodeJS を実行するかについても投稿していただければ幸いです。