2016-05-03 9 views
0

私はnodejについてほとんど知りません。私が知っているのは、単一スレッドモデルで動作し、I/Oタスクの複数のスレッドに切り替えるということだけです。nodejsの単一スレッドモデルは、処理キューの方が長持ちしていますか?

Request A ----> nodejs (Single Thread) 

// Finds out that it the requires requires I/O operation 

nodejs ----> underlying OS (Starts An Independent Thread) 

// nodejs is free to serve more requests 

が、これは1000 concurrent requestsのために意味していますので、たとえば、すべての999要求が処理された後に処理される要求があるでしょうか?はいの場合は、非効率的なシステムのようです!私はapacheという用語をphpに、より適切になるように(上記の場合)と実行します。 ApacheをPHPで使用すると、同時実行スレッド1000を起動することができ、処理キューと待機時間はゼロになります。

私はここで重要な概念を見逃しているかもしれませんが、実際にはnodejsの仕組みですか?

答えて

1

Node.jsは、イベントループプログラミングモデルに基づいています。イベントループは単一スレッドで実行され、イベントを繰り返し待機し、その後、それらのイベントをサブスクライブしたイベントハンドラを実行します。イベントは、例えばすることができ

タイマー待ちはデータの 次のチャンクは、私たちの道を来て新鮮な新しいHTTPリクエストをtheresの このすべては、単一のスレッドで実行され、何のJavaScriptコードは今までありません。このファイル に書き込まれる準備ができている完了します並行して実行される。これらのイベントハンドラが小さく、さらに多くのイベントを待つ限り、すべてがうまくいきます。これにより、1つのNode.jsプロセスで複数の要求を同時に処理することができます。このSQL場合

(イベントの発信元として、ボンネットの下に少しの魔法があります。それのいくつかは、並列に実行されている低レベルのワーカースレッドを伴う。)

は、物事(イベント)の多くがありますが起こっデータベースクエリを作成し、その結果をコールバックで取得するまでです。その間、イベントループは、アプリケーションにライフをポンピングし、他の要求を一度に1つ小さなイベントに進めます。したがって、複数の要求が同時に処理されています。

Article

関連する問題