亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node學習記錄之cluster模塊

 更新時間:2017年05月31日 16:44:51   作者:AlexZ33  
本篇文章主要介紹了Node學習記錄之cluster模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

在如今機器的CPU都是多核的背景下,Node的單線程設計已經(jīng)沒法更充分的"壓榨"機器性能了。所以從v0.8開始,Node新增了一個內(nèi)置模塊——“cluster”,故名思議,它可以通過一個父進程管理一坨子進程的方式來實現(xiàn)集群的功能。

var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length; // 獲取CPU的個數(shù)
 
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屬性,判斷是否Master進程,是則fork子進程,否則啟動一個server。每個HTTP server都能監(jiān)聽到同一個端口。但是在實際項目中,我們的啟動代碼一般都已經(jīng)封裝在了app.js中,要把整塊啟動邏輯嵌在上面的if else中實在不優(yōu)雅。 所以,我們可以這樣:

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");
}

簡單之處就在于原本的應用邏輯根本不需要知道自己是在集群還是單邊。(當然,如果應用在內(nèi)存中維護了某些狀態(tài),比如session,就需要運用某些機制來共享了,這里不詳說)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

最新評論