Node.jsのものは異なります

ここに画像の説明を挿入

1. Node.jsとは

公式の定義:Node.jsはChrome V8エンジンに基づくJavaScriptランタイムです

  1. Node.jsは、JavaScriptをサーバー上で実行できるようにする開発プラットフォームであり、JavaScriptの範囲をサーバーまで拡張し、PHP、JSP、Python、Rubyで議論できます。ただし、Node.jsは独立した言語ではなく、言語、プラットフォームの両方であるPHP、JSP、Python、Ruby、Perlとは異なり、プログラミングにはJavaScript言語を使用し、Chromeで実行します。 V8。次に、従来のバックエンド言語と比較して、Node.jsはサーバーソフトウェア上に構築する必要がなく、その多くの設計概念従来のLAMPアーキテクチャと異なります。Node.jsは強力なスケーラビリティを備えています。
  2. Node.jsは、最小のハードウェアコストで最高の同時実行性と最高の処理パフォーマンスを追求します。

第二に、Node.jsは異なります

シングルスレッド

**多线程与NodeJs单线程比较:**

一般的なバックグラウンド言語はすべてマルチスレッド化されており、リクエストを処理すると、リクエストを処理するための新しいスレッドが作成されます。したがって、Webアプリケーションでより多くのユーザーをサポートできるようにするには、サーバーの数を増やす必要があり、ハードウェアのコストが大幅に増加します。

Node.jsのは、個別の要求ごとにスレッドが、唯一つのスレッドを作成しません。ユーザーが接続すると、内部イベントがトリガーされます。非ブロッキングI / Oとイベント駆動型メカニズムにより、Node.jsもマクロで並列になります。

**NodeJs 单线程优劣:**

利点:オペレーティングシステムにはスレッドの作成と破棄のイベントオーバーヘッドがなくなりました。つまり、メモリのオーバーヘッドとオペレーティングシステムのメモリページを削減できます

短所:ビジネスが開始しても、コードの実行がI / Oによってブロックされている場合、スレッドがブロックされているため、プログラムの実行効率が大幅に低下している

2.ノンブロッキングI / O

Node.jsはノンブロッキングI / Oメカニズムを使用します。データベースにアクセスするためのコードを一時停止した後、すぐに背後のコードに切り替え、データベースから返された結果を処理するコードをコールバック関数に配置することで、プログラムの実行効率を向上させます。

ブロックモード、スレッドは1つのタスクだけを扱うことができる、あなたはマルチスレッドによるスループット改善したい必要があります。

非ブロックモード、スレッドは常に計算操作を実行する、スレッドCPUコア使用率は常に100%です

3.イベント駆動

I / Oの実行が完了すると、I / Oを実行するスレッドはイベントの形で通知されます。スレッドはこのイベントのコールバック関数を実行します。非同期I / Oを処理するには、スレッドにイベントループがあり、常に未処理をチェックする必要がありますイベント

「イベントリング」処理メカニズム:一度に実行できるイベントコールバック関数は1つだけですが、イベントコールバック関数の実行中に、他のイベント(新しいユーザー接続など)に切り替えて戻ることができます。元のイベントのコールバック関数を引き続き実行します。

基礎となるノードは、C ++、V8はまた、基礎となるC ++です。基礎となるコードのほぼ半分は、イベントキューとコールバック関数キューの構築に関するものです。

ノード高性能の最も重要なリンク:サーバーのイベント駆動型タスクスケジューリング
ここに画像の説明を挿入

第三に、マルチスレッドとシングルスレッドのビジネス処理の違い

高い同時実行性:これは、インターネット分散システムアーキテクチャの設計で考慮しなければならない要因の1つです。通常、システムが同時に多くの要求を同時に処理できるようにすることを指します

一般的なバックグラウンド言語マルチスレッドは、NodeJSの単一スレッド処理ビジネスとは異なります。
ここに画像の説明を挿入

4番目に、Node.jsによって構築されたサーバー

1.ノードはサーバープログラムであり、記述されたすべてのJSステートメントはノードサーバー上で実行されます。返されるHTMLはすべて処理されたHTMLです。

JSファイルを直接ブラウザーにドラッグして実行することはできませんが、Nodeを使用すると、Nodeを介して任意のJSファイルを直接実行できます。NodeはJS実行環境です。
このサーバーのスクリプトがJSファイルの場合、Nodeサーバー実行します。nodeコマンドは、ファイルを実行するために使用されます。

2.ノードにWedコンテナがない(ノードにルートディレクトリの概念がない)

ノードはルーティングのトップレベルの設計を行います。例:URL:127.0.0.1/tmp/bar / tmpおよび/ barは物理フォルダーではありません。
つまり、ノードのURLは実際の物理ファイルとは関係なく、URLが渡されます特定の静的ファイルを提示するノードの最上位設計は、任意の静的ファイルにルーティングできます。

5.アプリケーション

1.開発の方向性

  1. nodeJsはI / Oが得意ですが、計算は得意ではありません。nodejsがタスクスケジューリングに最適であるためです。ビジネスに大量のCPU計算(同期コード)がある場合、これは実際にはこの計算がスレッド全体をブロックしていることと同じです。コンピューティングはNodeJS開発には適していません。
  2. アプリケーションが多数の同時並行I / Oを処理する必要があり、クライアントに応答を送信する前に、アプリケーション内で複雑な処理が必要ない場合、NodeJは非常に適しています。
  3. 長い接続でリアルタイムのインタラクティブアプリケーションを開発するためにWebソケットを操作するのに適しています。

2.主な用途

  1. RESTなどのWebサービスAPI
  2. リアルタイムマルチプレイヤー
  3. クロスドメインやサーバー側のリクエストなどのバックエンドWebサービス。
  4. インスタントメッセージングなどのマルチクライアント通信
  5. 次のようなWebベースのアプリケーション:ユーザーフォームコレクション

6.見通し

  1. Node.jsは、究極のパフォーマンスを求めるオタクの製品であり、多くのサーバーの堅牢な考慮が欠如しています。したがって、ノードは、高い信頼性を必要とする銀行、証券、電気通信およびその他のビジネスでは使用されません。
  2. 成熟した企業は基本的にNodeを使用して、Zhihuの社内書簡、Baiduのほとんどのフォーム、データベースの相互作用などの特定の機能を実現します。
  3. ノードは特効薬ではありません。ノードはツールボックスの小さなツールです
元の記事を40件公開 31 件を獲得 2768回表示

おすすめ

転載: blog.csdn.net/CodingmanNAN/article/details/104486666