最近話題のNode.jsについて調べてみたメモ

ざっくりと調べてみたメモ。まだ途中。
もっと個々の要素についても理解しないと。

キーワード

  • スレッドモデルとイベントループ
  • ノンブロッキングI/O
  • V8 JavaScriptエンジン

スレッドモデルとイベントループ

  • スレッドモデル
    • 一つのリクエストを処理するのに一つのプロセスが必要
    • 同時処理性能を上げるためにはプロセス数を増やす
    • プロセス数が増えるのでメモリを食う
    • リクエスト毎に独立したプロセスが対応するので、一つのプロセスが落ちても他のプロセスに影響はない
  • イベントループ
    • Nodeはこっちのタイプ
    • 1プロセスで同時に複数のリクエストを扱うことが出来るので省メモリ
    • ブロックが発生すると全体の処理がストップ
    • Nodeでは非ブロッキングI/Oを採用することでこれを回避

ノンブロッキングI/O

  • 2つのライブラリ
    • libevent
    • libev + libeio
  • Nodeの開発当初に比較的高速だったlibevを採用

V8 JavaScriptエンジン

  • Nodeが採用
  • Googleが開発したエンジン、Chromeに搭載されているやつ
  • JavaScriptのコードを機械語にコンパイルするから早い

いまのところの感想

わからん用語ばっかりで、知識がWebアプリケーションプログラミングに偏っていることを痛感。
もっと知識をつけないといかんなあ。
素晴らしい記事を書いて下さったid:badatmath氏とid:t_43z氏には感謝。