この記事は主に 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('exit', function(worker, code, signal) { console.log('worker ' + worker.process.pid + ' died'); }); } 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('cluster'); var numCPUs = require('os').cpus().length; if (cluster.isMaster) { for (var i = 0; i < numCPUs; i++) { cluster.fork(); } // 其它代码 } else { require("./app.js"); }
シンプルなのは、元のアプリケーション ロジックがクラスター内にあるか一方的にあるかを知る必要がないことです。 (もちろん、アプリケーションがセッションなどの特定の状態をメモリ内に維持する場合、それらを共有するために特定のメカニズムを使用する必要があります。ここでは詳しく説明しません)
以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。その他の関連コンテンツについては、PHP 中国語 Web サイトに注目してください。
関連する推奨事項: ページの bigpipe 非同期読み込みを実装するための
fs モジュールに基づいてシステム ファイルとディレクトリを読み書きする node.js メソッドについて
以上がNodeのクラスターモジュールについて学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。