nodejs实现多进程(cluster 模式)

nodejs实现多进程(cluster 模式),第1张

Nodejs的主进程是单线程的,但它有多线程处理方案(更准备来说是多进程方案),即主进程开启不同的子进程,主进程接收所有请求,然后将分发给其它不同的nodejs子进程处理。

它一般有两种实现:

Nodejs 的 cluster模式 用的就是第一种实现,它使用一个主线程 master 和多个子线程 worker ,形成一个集群,通过主线程来向子线程分发请求。cluster 实现了对 child_process 的封装,通过 fork 方法创建子进程的方式实现了多进程模型。

>

NodeJS的特点:

它是一个Javascript运行环境

依赖于Chrome V8引擎进行代码解释

事件驱动

非阻塞I/O

轻量、可伸缩,适于实时数据交互应用

单进程,单线程

NodeJS的缺点:

1 不适合CPU密集型应用;CPU密集型应用给Node带来的挑战主要是:由于JavaScript单线程的原因,如果有长时间运行的计算(比如大循环),将会导致CPU时间片不能释放,使得后续I/O无法发起;

解决方案:分解大型运算任务为多个小任务,使得运算能够适时释放,不阻塞I/O调用的发起;

2 只支持单核CPU,不能充分利用CPU

3 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

原因:单进程,单线程

解决方案:

(1)Nnigx反向代理,负载均衡,开多个进程,绑定多个端口;

(2)开多个进程监听同一个端口,使用cluster模块;

4 开源组件库质量参差不齐,更新快,向下不兼容

5 Debug不方便,错误没有stack trace

NodeJS的应用场景:

实时应用:如在线聊天,实时通知推送等等(如socketio)

分布式应用:通过高效的并行I/O使用已有的数据

工具类应用:海量的工具,小到前端压缩部署(如grunt),大到桌面图形界面应用程序

游戏类应用:游戏领域对实时和并发有很高的要求(如网易的pomelo框架)

NodeJS不适合场景:

CPU使用率较重、IO使用率较轻的应用——如视频编码、人工智能等,Nodejs的优势无法发挥简单Web应用——此类应用的特点是,流量低、物理架构简单,Nodejs无法提供像Ruby的Rails或者Python的Django这样强大的框架

不同的语言、框架都有自己擅长的领域:Electron 基于 Chromium 和 Nodejs 能以 Web 开发的模式打造桌面应用,开发用户界面又快捷又简单;Python 则在数据分析、自动化脚本等领域有非常多的应用。两者的社区生态都十分强大,由两者共同构建应用,在界面开发、功能、性能上能够强强联合;

为了简单验证技术可行性,我们来编写一个 Demo:

目的:验证 Electron 打造的桌面应用能够调用 Python,思路是使用 RPC 或 >

我们最近有个项目需要使用Node桌面版技术,正如大多数人一样,我的初次选型是NW,那么出乎意料,大坑来了!!!

倘若你的桌面版应用没有跟底层(C++模块)挂钩,也就是没有使用到消息推送、版本升级、打印功能之类的东西,但是bug还是挺多的。并且一旦使用到这些功能,你就彻底调到坑里了,nw有个致命的缺陷在于所有的非javascript编写的模块都需要重新用nw-gyp重新编译一下,这个编译的过程会出现各种各样的问题。而Electron几乎可以使用所有的node模块,只需要node-gyp编译的即可。主要深坑就在这!!!还有,NW不像Electron自带版本升级。

nw唯一的好处是啥?兼容window XP呗。

下载node压缩包(> wget 

2 打开安装目录

cd /usr/local/src/node-v423-linux-x86/bin

现在可以直接 使用 node 命令来运行nodejs程序了

3 配置系统环境

sudo vi /etc/profile

// 输入root密码

// 将光标移至文件最下方,按i进入插入模式,输入:

# node

export NODE_HOME=/usr/local/src/node-v423-linux-x86

export PATH=$PATH:$NODE_HOME/bin  

export NODE_PATH=$NODE_HOME/lib/node_modules 

// 输入完毕后,按下左上角esc键,接着轻敲

:wq!

// 来保存文件,然后输入:

source /etc/profile 

// 使配置文件生效

4 完成

输入以下命令,若出现版本号,则标示node环境已经配置成功

node -v

以上就是关于nodejs实现多进程(cluster 模式)全部的内容,包括:nodejs实现多进程(cluster 模式)、如何在centos6上部署nodejs服务、node.js适合做什么网站等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9353721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存