이 글에서는 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에 캡슐화되어 있습니다. 그렇지 않은 경우 위의 전체 시작 로직을 포함하는 것은 우아하지 않습니다. 따라서 다음과 같이 할 수 있습니다.
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 중국어 웹사이트를 주목해주세요!
관련 권장 사항:
페이지의 bigpipe 비동기 로딩을 구현하는 Nodejs 메서드
fs 모듈을 기반으로 시스템 파일과 디렉터리를 읽고 쓰는 node.js 방법 정보
위 내용은 Node에서 클러스터 모듈 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!