コンテンツにスキップ

Reference

大量のリクエストを高速に捌くのが得意

公式サイト

https://nodejs.org/en/
https://nodejs.org/jp/

API Docs

Stabilityをチェック。高いほど安定。

リクエストを捌く方式

・スレッドモデル(Apache) ・イベントループ(Node.js)

スレッドモデル

リクエストに対し、スレッドを立ち上げて対応。 スレッドは同時に1つのリクエストしか処理できないので、リクエストごとにスレッドを作成する。 スレッドを立ち上げるとメモリを消費するが、メモリには制限があるため、多くのリクエストが飛んでくると、これ以上スレッドを立ち上げる事が出来なくなり、待ち状態が発生する。

イベントループ

メインのスレッドと、バッググラウンドのスレッドに分かれる。
メインのスレッドが1つしかないので、シングルスレッド形式とも呼ばれる。
メインのスレッドには処理待ちのキューがあり、そこに処理がたまっている間、ループを回して次々と処理をしていくという仕組み。

リクエストが来た時、まずはキューに登録される。
ループが回ってきて、キューに何かが登録されているのを検出すると、順番にバックグラウンドの処理に回す。  
前の処理が終わるまで次の処理を待つことが無いので、新しくスレッドを立てなくても、次々とリクエストを処理する事ができる。  
※メインのループをブロックしないようにコーディングする必要がある。(「Non-blocking」な書き方)