Nodeのクラスターモジュールについて学ぶ

不言
リリース: 2018-06-30 14:23:53
オリジナル
2041 人が閲覧しました

この記事は主に Node の学習記録のクラスター モジュールを紹介します。内容が非常に優れているので、参考として共有します。

マルチコア CPU を搭載した今日のマシンの状況では、Node のシングルスレッド設計ではマシンのパフォーマンスを完全に「絞り出す」ことはできなくなりました。そこで、v0.8 から、Node には組み込みモジュール「クラスター」が追加され、親プロセスを通じて多数の子プロセスを管理することでクラスター機能を実現できるようになりました。

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length; // 获取CPU的个数
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
 
  cluster.on(&#39;exit&#39;, function(worker, code, signal) {
    console.log(&#39;worker &#39; + worker.process.pid + &#39; died&#39;);
  });
} else {
  http.createServer(function(req, res) {
    res.writeHead(200);
    res.end("hello world\n");
  }).listen(8000);
}
ログイン後にコピー

isMaster 属性を使用して、マスター プロセスであるかどうかを判断し、そうである場合は子プロセスをフォークし、それ以外の場合はサーバーを起動します。各 HTTP サーバーは同じポートをリッスンできます。ただし、実際のプロジェクトでは、起動コードは通常 app.js にカプセル化されます。起動ロジック全体を上記の if else に埋め込むのはエレガントではありません。 したがって、これを行うことができます:

var cluster = require(&#39;cluster&#39;);
var numCPUs = require(&#39;os&#39;).cpus().length;
 
if (cluster.isMaster) {
  for (var i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  // 其它代码
  
} else {
  require("./app.js");
}
ログイン後にコピー

シンプルなのは、元のアプリケーション ロジックがクラスター内にあるか一方的にあるかを知る必要がないことです。 (もちろん、アプリケーションがセッションなどの特定の状態をメモリ内に維持する場合、それらを共有するために特定のメカニズムを使用する必要があります。ここでは詳しく説明しません)

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。

関連する推奨事項: ページの bigpipe 非同期読み込みを実装するための

nodejs メソッド

fs モジュールに基づいてシステム ファイルとディレクトリを読み書きする node.js メソッドについて

以上がNodeのクラスターモジュールについて学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!