Node.cluster
2016-07-27 13:31
295 查看
nodejs是一个单进程单线程的引擎,只能利用到单个cpu进行计算,面对当今服务器性能的提高,cpu的利用率显然对node应有的性能大打折扣,面对这个问题,cluster应运而生。
worker对象
cluster介绍
cluster是一个nodejs内置的模块,用于nodejs多核处理。cluster模块,可以帮助我们简化多进程并行化程序的开发难度,轻松构建一个用于负载均衡的集群。API
cluster对象cluster的各种属性和函数 cluster.setttings:配置集群参数对象 cluster.isMaster:判断是不是master节点 cluster.isWorker:判断是不是worker节点 Event: 'fork': 监听创建worker进程事件 Event: 'online': 监听worker创建成功事件 Event: 'listening': 监听worker向master状态事件 Event: 'disconnect': 监听worker断线事件 Event: 'exit': 监听worker退出事件 Event: 'setup': 监听setupMaster事件 cluster.setupMaster([settings]): 设置集群参数 cluster.fork([env]): 创建worker进程 cluster.disconnect([callback]): 关闭worket进程 cluster.worker: 获得当前的worker对象 cluster.workers: 获得集群中所有存活的worker对象
worker对象
worker的各种属性和函数:可以通过cluster.workers, cluster.worket获得。 worker.id: 进程ID号 worker.process: ChildProcess对象 worker.suicide: 在disconnect()后,判断worker是否自杀 worker.send(message, [sendHandle]): master给worker发送消息。注:worker给发master发送消息要用process.send(message) worker.kill([signal='SIGTERM']): 杀死指定的worker,别名destory() worker.disconnect(): 断开worker连接,让worker自杀 Event: 'message': 监听master和worker的message事件 Event: 'online': 监听指定的worker创建成功事件 Event: 'listening': 监听master向worker状态事件 Event: 'disconnect': 监听worker断线事件 Event: 'exit': 监听worker退出事件
简单实现代码
//引用cluster模块 var cluster = require('cluster'); //引用os模块 根据CPU的核数,获取CPU的length var numCPUs = require('os').cpus().length; //子进程列表 var workers = {}; cluster.setupMaster({ exec:"./app.js" }); //主进程 if(cluster.isMaster){ for(var i = 0; i < numCPUs ; i++){ //复制进程 workers[i] = cluster.fork(); } } //进程被复制创建时触发 cluster.on('fork', function (workers) { LogFile.trace('一个进程被创建, workers.process.pid is '+workers.process.pid); }); cluster.on('online',function(workers){ //console.logs(workers.process.pid); }); cluster.on('death', function (worker) { //当前进程死亡时的监听事件 }); cluster.on('exit', function (worker,code,sigian) { //当前业务进程退出时的监听事件 LogFile.trace(worker.process.pid+' 进程退出.'); });
相关文章推荐
- NodeJs-- 新建项目实例
- 运行node.js 后台代码准备工作
- Hadoop2.7.x中所有的DataNode都启动不了解决办法
- 237. Delete Node in a Linked List
- DAY12:leetcode #24 Swap Nodes in Pairs
- 19. Remove Nth Node From End of List
- Node.js单线程
- NodeMCU之旅(二):断线自动重连,闪烁连接状态
- 在express4上使用socket.io 1.4.6版本的心得(node.js实战读书笔记2)
- Confman - 针对「Node 应用」的配置文件加载模块
- 重启Ubuntu后Hadoop的namenode起不来的解决办法
- 什么是中间件,nodejs的概念
- 24. Swap Nodes in Pairs
- node 图片上传功能
- nodejs安装express成功,但是使用不了的解决方法。
- NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
- hadoop namenode ha--手动切换(转)
- Html5+NodeJS——拖拽多个文件上传到服务器
- 有关javascript与nodejs面向对象的编程总结
- 基于Nodejs的自动化工具Gulp学习