>  기사  >  웹 프론트엔드  >  Node에서 클러스터 모듈 학습

Node에서 클러스터 모듈 학습

不言
不言원래의
2018-06-30 14:23:532057검색

이 글에서는 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에 캡슐화되어 있습니다. 그렇지 않은 경우 위의 전체 시작 로직을 포함하는 것은 우아하지 않습니다. 따라서 다음과 같이 할 수 있습니다.

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 중국어 웹사이트를 주목해주세요!

관련 권장 사항:

페이지의 bigpipe 비동기 로딩을 구현하는 Nodejs 메서드

fs 모듈을 기반으로 시스템 파일과 디렉터리를 읽고 쓰는 node.js 방법 정보

위 내용은 Node에서 클러스터 모듈 학습의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.