使用cluster 将自己的Node服务器扩展为多线程服务器
用nodejs的朋友都有了解,node是单线程的,也就是说跑在8核CPU上,只能使用一个核的算力。
单线程一直是node的一个诟病,但随着0.6版本中引入cluster之后,这个情况则得到了改变,开发人员可以依靠cluster很轻松的将自己的Node服务器扩展为多线程服务器了。
什么是Cluster
cluster是node提供的一个多线程库,用户可以使用它来创建多个线程,线程之间共享一个监听端口,当有外部请求这个端口时,cluster会将请求转发到随机线程里。因为每个node线程都会占用几十兆的内存,所以不能像php那样对每个请求创建一个线程,一般来说创建的线程数最多都不会超过cpu的核心数量。
varcluster=require('cluster'); varhttp=require('http'); varnumCPUs=require('os').cpus().length;
if(cluster.isMaster){ //Forkworkers. for(vari=0;i<numCPUs;i++){ cluster.fork(); }
cluster.on('exit',function(worker,code,signal){ console.log('worker'+worker.process.pid+'died'); }); }else{ //WorkerscanshareanyTCPconnection //InthiscaseitsaHTTPserver http.createServer(function(req,res){ res.writeHead(200); res.end("helloworld\n"); }).listen(8000); }