nodeJs多进程Cluster
在前端页面中,如果我们想进行多进程,我们会用到WebWorker,而在NodeJs中,我们如果想充分利用服务器核心资源,我们会用到Node中Cluster模块
直接上代码吧:
const cluster = require('cluster');
const http = require('http');
const process = require('process');
const os = require('os');
//是否为主进程,主进程才能创建子进程
if(cluster.isMaster){
  //每个核心一个进程为最佳
  for(let i=0;i<os.cpus().length;i++){
      cluster.fork();
  }
}else{
  const server = http.createServer((req,res)=>{
    res.setHeader('Content-Type','text/html;charset=utf-8');
    res.write(`#${process.pid}号进程为你服务~~`);
    res.end();
  })
  //同一个主进程和它的子进程可以共享端口,计算机会一直用同一个子进程来监听执行8088,直到第一个子进程资源被用完,再换其他进程
  server.listen(8088);
}
如果一台服务器4核心,上面这个程序就会生成1个主进程和4个子进程
nodeJs多进程Cluster的更多相关文章
- Nodejs中cluster模块的多进程共享数据问题
		Nodejs中cluster模块的多进程共享数据问题 前述 nodejs在v0.6.x之后增加了一个模块cluster用于实现多进程,利用child_process模块来创建和管理进程,增加程序在多核 ... 
- NodeJS多进程
		NodeJS多进程 Node以单线程的方式运行,通过事件驱动的方式来减少开销车,处理并发.我们可以注册多进程,然后监听子进程的事件来实现并发 简介 Node提供了child_process模块来处理子 ... 
- NodeJS的Cluster模块使用
		一.前言大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU实现并行. 随着n ... 
- 浅谈NodeJS多进程服务架构基本原理
		阅读目录 一:nodejs进程进化及多进程架构原理 二:node中child_process模块实现多进程 三:父子进程间如何通信? 四:理解cluster集群 回到顶部 一:nodejs进程进化及多 ... 
- NodeJs多进程和socket.io通讯-DEMO
		一.开启多进程 const os = require('os'); const cp = require('child_process'); const forkList = {}; const fo ... 
- node.js cluster多进程、负载均衡和平滑重启
		1 cluster多进程 cluster经过好几代的发展,现在已经比较好使了.利用cluster,可以自动完成子进程worker分配request的事情,就不再需要自己写代码在master进程中rob ... 
- nodejs review-03
		39 Serve different file types with our server 处理文件类型 function content_type(filename) { var ext = pat ... 
- 关于NODEJS性能测试和优缺点总结
		最近公司开发了一套新产品,采用nodejs前端+Java后端框架,为完全的前后端分离结构,以下为相关信息. 软件及功能: 软件 功能 Nginx 负责反向代理和负载均衡 Nodejs 前端代码 JDK ... 
- nodejs(二) --- 重要知识点回顾
		1. 运行一个nodejs文件, 如一个js文件中只含有console.log("hello world");的文件,我们再git里运行node,即 node hello.js 即 ... 
随机推荐
- python数据类型——字典类型
			字典(dictionary) python中唯一的映射类型,采用键值对(key-value)的形式储存数据,python对key进行哈希函数运算,所以key值必须是可哈希的,可哈希表示key必须是不可 ... 
- springboot 整合 MongoDB 实现登录注册,html 页面获取后台参数的方法
			springboot简介: Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ... 
- tcpdump抓包工具的使用
			个人原创,转载请注明,否则依法追究法律责任 2018-02-28 16:01:26 tcpdump 倾倒网络传输数据,直接启动tcpdump将监视第一个网络接口上所有流过的数据包. 1 不接任何参数 ... 
- 使用git提交到github,每次都要输入用户名和密码的解决方法
			使用git提交文件到github,每次都要输入用户名和密码,操作起来很麻烦,以下方法可解决,记录以下. 原因:在clone 项目的时候,使用了 https方式,而不是ssh方式. 默认clone 方式 ... 
- Python基础-week01
			本节内容摘要:http://www.cnblogs.com/Jame-mei Python介绍 Python是怎么样的语言? Python 2 or 3? 安装 Hello World程序 变量 用户 ... 
- UWP 圆形菜单
			用过Surface dial的童鞋们都很熟悉,当使用Dial的时候,那个圆形菜单很漂亮,那么我们在普通的uwp中是否也可以实现吗? 答案是肯定的. 其实这是来源于GayHub的一个开源项目,做的很不错 ... 
- 自动识别移动端还是PC端
			平时在开发中经常会遇到这样的需求,除了开发PC端之外,还会同时开发移动端.对于简单的页面,可以使用bootstrap之类的框架实现响应式页面,可是当页面很复杂的时候,就需要开发一个移动端页面,一个PC ... 
- Kotlin——从无到有系列之高级篇(一):Lambda表达式
			如果您对Kotlin很有兴趣,或者很想学好这门语言,可以关注我的掘金,或者进入我的QQ群大家一起学习.进步. 欢迎各位大佬进群共同研究.探索 QQ群号:497071402 进入正题 经过前面一系列对K ... 
- Matlab绘图基础——绘制向量图,二维三维(绘制参数曲线图)
			------------------------------------------- %绘制向量场图 %例一 clear all;clc; [X,Y] = meshgrid(-2:.2:2,-3:. ... 
- 分布式代码管理系统GIT
			1.1Git安装 CentOS上 yum install -y epel-release; yum install git Ubuntu上 apt-get install git Windo ... 
