blog

Nodeの概要

09rdはV8をベースに軽量なWebサーバとライブラリ一式を構築しています。 1.なぜJSなのか 高性能なウェブサーバを構築する鍵は、イベントドリブン、非同期IOであり、これはJSによって自然にサポー...

Feb 15, 2020 · 2 min. read
シェア

Node

09 rdはV8をベースとした軽量なウェブサーバとライブラリ一式を構築します。

Nodeネーミングとソース

なぜJSなのか

ハイパフォーマンスなウェブサーバーを構築する鍵は、JSで自然にサポートされるイベント駆動型の非同期IOです。

なぜNodeというのですか?

Nodeは、Webアプリケーションを構築するための基本的なフレームワークとなります。各 Node はシングルスレッドで単一のプロセスとして動作し、大規模な分散アプリケーションを構築するためのインフラストラクチャを提供します。各 Node プロセスは、大規模な Web アプリケーションのノードとして動作します。

NodeJSへの影響

JSは長い間、ブラウザのサンドボックスに閉じ込められており、以下はブラウザにおけるJSのアーキテクチャモデルです。

WebKitエンジンはUIレイアウト関連を担当します。次に Node のアーキテクチャモデルです。

ブラウザ環境内でのJSの機能はブラウザによって制限されますが、NodeではUI関連の機能以外にも、ファイルを任意に変更するなど、様々なことが可能です。

JSは、ブラウザではイベントドリブンによってインターフェイスと対話する役割を果たし、NodeではIOを提供します。

Node

非同期IO

ブラウザ側のJSと同様にajaxリクエストを起動するには、同じ "私を呼ばないで、私はあなたを呼び出します "特性に沿った買収の値の結果の非同期操作でNodeを。 非同期IO操作の多くの基礎となるカプセル化でNodeは、並列IOの実装です。

古典的な非同期呼び出し(コンピューティング)

イベントとコールバック関数

  • 非同期IOを持つノードは、ビジネスロジックにいくつかのイベントポイントを公開します。
  • コールバック関数は第一級市民であり、非同期操作から返されるデータを受け取るための最良の方法です。

シングルスレッド

JSのシングルスレッドという性質は、マルチスレッドプログラミングの状態同期やデッドロックの問題に直面する必要がないことを意味しますが、いくつかの欠点もあります:

  • 大規模計算のブロック
  • マルチコアCPUの利点を生かせない
  • プログラムエラー時のアボート、コードのロバスト性をテストする必要があります。

ブラウザ側のJSブロッキングはレンダリングやレスポンスの中断の問題を引き起こし、Node側のJSブロッキングは非同期IOの呼び出しや完了した非同期IO処理のコールバックの実行を継続できない問題を引き起こします。これらのデメリットについては、JSでも同様にブラウザ環境ではWeb Workerを、Node環境ではchild_processを用意し、マルチコアCPUを活用して計算を分解しています。

Read next

i

有効期限の実装:1ランダムにそれが有効期限が切れているかどうかを判断するためにデータを取る、2ユーザーのクエリは、それが有効期限が切れているかどうかを判断するために メモリ戦略:LRUアルゴリズム6種類の1データセットの有効期限を設定し、すべてのデータセットは、未使用の最長を取る、ランダムにこれらの2つを選択し、2。...

Feb 14, 2020 · 6 min read