ホームページ  >  記事  >  ウェブフロントエンド  >  Nodejs はどのようなシナリオに適用できますか?

Nodejs はどのようなシナリオに適用できますか?

青灯夜游
青灯夜游転載
2021-05-28 10:08:362469ブラウズ

この記事では、Nodejs のいくつかのアプリケーション シナリオを紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。

Nodejs はどのようなシナリオに適用できますか?

Apache のマルチスレッド高同時実行モード

利点: マルチスレッド同時実行をサポート

欠点: ブロッキング

スレッドとは

スレッドは、独立して実行でき、同時に実行できる最小の CPU ユニットです。同じプロセス プロセスの下で実行され、メモリ アドレス空間を共有します。

異なるスレッドが同じ変数を占有する必要がある場合、先着順の原則に従って、最初に到着したスレッドが実行されている間、後続のスレッドは待機することしかできません。つまり、参加します。ブロッキングキューシーケンス。これにより、スレッドのブロックが発生します。

同様のシナリオ: 銀行窓口業務業務

NodeJS の非同期 I/O 原理

利点: 高い同時実行性 (最も重要)利点)、I/O 集中型アプリケーションに適しています

欠点:

  • CPU 集中型アプリケーションには適していません (CPU 集中型アプリケーションが Node にもたらす主な課題)はい: JavaScript のシングルスレッドの性質により、長時間実行される計算 (大規模なループなど) がある場合、CPU タイム スライスが解放されず、後続の I/O を開始できなくなります)

  • シングルコア CPU のみをサポートし、CPU を最大限に活用することはできません

  • 信頼性が低く、コードの特定のリンクがクラッシュするとシステム全体がクラッシュします

    理由: 単一プロセス、単一スレッド
    解決策:
    (1) Nnigx リバース プロキシ、ロード バランシング、複数のプロセスをオープン、複数のポートをバインド;
    (2) 複数のプロセスをオープンして同じポートをリッスンし、次を使用します。クラスターモジュール
    (3) PM2 を使用してプロセスをオンラインで管理し、問題があればプロジェクトを自動的に再起動します

  • デバッグが不便で、スタック トレースがありません。エラー

NodeJS はイベントベースのループであり、NodeJS の各ロジックはコールバック関数内に記述され、コールバック関数は戻った後に非同期で実行されます。 【推奨学習:「

nodejsチュートリアル」】

NodeJSはブロッキングではありませんが、その後のコールバック処理でブロッキングが発生するのではなく、NodeJS自体によるロジックの計算や処理でブロッキングが発生します。

NodeJS すべての I/O、ネットワーク通信、およびその他の時間のかかる操作は、実行とコールバックのためにワーカー スレッドに引き渡されるため、非常に高速です。ただし、CPU の通常の動作では、CPU は単独でのみ動作します。

同様のシナリオ: 注文の列に並び、自分の番号に電話して食べ物を受け取ります。

NodeJS のアプリケーション シナリオ

NodeJS は同時実行性を処理する強力な機能を備えていますが、計算とロジックを処理する機能は非常に弱いです。

そこで、複雑な論理演算をフロントエンド(クライアント)に移して完結させ、NodeJSは非同期I/Oを提供するだけで済むため、同時実行性の高い高性能な処理を実現できます。

RESTful API

これは、NodeJS にとって最も理想的なアプリケーション シナリオです。数万の接続を処理できます。ロジック自体は API をリクエストし、データを整理して返すだけです。

基本的には、データベースからいくつかの値を検索し、それらを応答に組み立てるだけです。

応答は少量のテキストであり、受信リクエストも少量のテキストであるため、トラフィックは高くならず、最も多忙な企業の API ニーズでも 1 台のマシンで処理できます。

大量の Ajax リクエストを含むアプリケーション

リアルタイム チャット、強力なクライアント ロジックを備えたシングルページ APP、具体的な例は次のとおりです。ローカライズされたオンライン音楽アプリケーション、ローカライズされたオンライン検索アプリケーション、ローカライズされたオンライン APP など。

Apache の該当するシナリオ

Apache は、マルチスレッドの同時実行性の高い共有メモリ アドレス空間の特性により、サーバーが強力であれば、プロセッサーに十分なコア数があれば、Apache は非常に適切に動作するため、比較的少ない (同時) 非同期処理、大量のバックグラウンド計算、および複雑なバックグラウンド ビジネス ロジックを備えたアプリケーションに適しています。

プログラミング関連の知識について詳しくは、

プログラミング ビデオをご覧ください。 !

以上がNodejs はどのようなシナリオに適用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。