Node.jsはシングルスレッドです。 Javascript V8エンジンといくつかの内部ライブラリはマルチスレッドです。 I/Oの場合、ノードはマルチスレッド可能なOSへのI/Oを委譲します。ノードがシングルスレッドのときにnode.jsに接続プールが必要なのはなぜですか?
私のnode.jsアプリケーションがredisまたはsql/mariadbサーバーに接続している場合は、redisまたはmysqlの接続プールは必要ないはずです。
開発者は、1つのredisまたはmysql接続を作成し、それを再利用してデータを送信/取得します。データが到着すると、ノードはコールバックを呼び出してデータを処理します。
Java/.NETとの接続プーリングは理解していますが、マルチスレッドであるため、Java/.NETの接続プーリングには明らかな利点があります。
私の質問は、ノードがシングルスレッドのときにnode.jsに接続プールが必要な理由は何ですか?それの利点はありますか?開発者がそれをしなくても、ノードは基礎となるOSとJavaScriptエンジンのマルチスレッド機能を活用しませんか?
おかげ
コメントやリンクありがとうございます。したがって、ノードはI/O用の内部スレッドプールを使用するので、redis接続プールまたはmysql接続プールを使用する利点はありますか? – Avneet
もちろん、これらの接続プールでは、新しい接続を開くのを待つオーバーヘッドがある代わりに、複数の接続を共有して使用できるようになります。これは、正しく実装されたときの最適化です。 – peteb
@Avneetまた、redisとmysqlのスレッドプールはあなたのコードと同じようにlibuvで実行されています。したがって、これらのパッケージによって作成された個別のプールはありません。あなたのコードはそれらのパッケージで実装され、コードはシングルスレッドで実行され、それらのプールは単に仕事を待っているだけのオープンな接続を提供します。接続を開くのを待つ必要はありません。 – peteb