cluster(nodejs)讲诉.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。 Node.js v4.2.4 手册 文档 索引?|?在单一页面中浏览?|?JSON格式 目录 集群 它是如何工作的 cluster.schedulingPolicy cluster.settings 集群的主进程(判断当前进程是否是主进程) 当前进程是否是从主进程的fork出来的 事件: fork 事件: online 事件: listening 事件: disconnect 事件: exit 事件: setup cluster.setupMaster([settings]) cluster.fork([env]) cluster.disconnect([callback]) cluster.worker cluster.workers 类: Worker worker.id cess worker.suicide worker.send(message, [sendHandle]) worker.kill([signal=SIGTERM]) worker.disconnect() 事件: message 事件: online 事件: listening 事件: disconnect 事件: exit 集群# 稳定度: 1 - 实验性 单个 Node 实例运行在单个线程中。要发挥多核系统的能力,用户有时候需要启动一个 Node 进程集群来处理负载。 集群模块允许你方便地创建一个共享服务器端口的进程网络。 cluster.on(exit, function(worker, code, signal) { console.log(worker + cess.pid + died);}); if (cluster.isMaster) { cluster.fork(); cluster.fork(); console.log(master pid: + process.pid);} else { // Workers can share any TCP connection // In this case its a HTTP server http.createServer(function(req, res) { res.writeHead(200); res.end(hello world\n); }).listen(8000); console.log(child pid: + process.pid);} 现在,运行 node 将会在所有工作进程间共享 8000 端口: % NODE_DEBUG=cluster node server.js23521,Master Worker 23524 online23521,Master Worker 23526 online23521,Master Worker 23523 online23521,Master Worker 23528 online 这是一个近期推出的功能,在未来版本中可能会有所改变。请尝试并提供反馈。 还要注意的是,在 Windows 中尚不能在工作进程中建立一个被命名的管道服务器。 它是如何工作的# 工作进程是通过使用?child_process.fork?方法派生的,因此它们可以通过 IPC(进程间通讯)与父进程通讯并互相传递服务器句柄。 集群模块支持两种分配传入连接的方式。 第一种(同时也是除 Windows 外所有平台的缺省方式)为循环式:主进程监听一个端口,接受新连接,并以轮流的方式分配给工作进程,并以一些内建机制来避免单个工作进程的超载。 第二种方式是,主进程建立监听嵌套字,并将它发送给感兴趣的工作进程,由工作进程直接接受传入连接。 第二种方式理论上有最好的性能。然而在实践中,由于操作系统的调度变幻莫测,分配往往十分不平衡。负载曾被观测到超过 70% 的连接结束于总共八个进程中的两个。 因为?server.listen()?将大部分工作交给了主进程,所以一个普通的node.js进程和一个集群工作进程会在三种情况下有所区别: server.listen({fd: 7})?由于消息被传递到主进程,父进程中的文件描述符 7 会被监听,并且句柄会被传递给工作进程,而不是监听工作进程中文件描述符 7 所引用的东西。 server.listen(handle)?明确地监听一个句柄会使得工作进程使用所给句柄,而不是与主进程通讯。如果工作进程已经拥有了该句柄,则假定您知道您在做什么。 server.listen(0)?通常,这会让服务器监听一个随机端口。然而,在集群中,各个工作进程每次listen(0)?

文档评论(0)

4477704 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档