单线程

Node保持了JavaScript在浏览器中单线程的特点。而且在Node中,JavaScript与其余线程是无法共享任何状态的。单线程的最大好处是不用像多线程编程那样处处在意状态的同步问题,这里没有死锁的存在,也没有线程上下文交换所带来的性能上的开销。

同样,单线程也有它自身的弱点,这些弱点是学 习Node的过程中必须要面对的。积极面对这些弱 点,可以享受到Node带来的好处,也能避免潜在 的问题,使其得以高效利用。单线程的弱点具体有以下3方面。

1.无法利用多核CPU。2.错误会引起整个应用退出,应用的健壮性值得考验。3.大量计算占用CPU导致无法继续调用异步I/O。

像浏览器中JavaScript与UI共用一个线程一样, JavaScript长时间执行会导致UI的渲染和响应被中 断。在Node中,长时间的CPU占用也会导致后续 的异步I/O发不出调用,已完成的异步I/O的回调 函数也会得不到及时执行。

Web Workers能够创建工作线程来进行计算,以解决 JavaScript大计算阻塞UI渲染的问题。工作线程为 了不阻塞主线程,通过消息传递的方式来传递运 行结果,这也使得工作线程不能访问到主线程中 的UI。

既然Node应用有上面提到的3个问题,那么就有解决的办法,PM2是一个守护进程管理器,它将帮助您全天候管理和保持应用程序在线。

PM2的主要特性:

1.内建负载均衡(使用Node cluster模块)2.后台运行3.0秒停机重载,我理解大概意思是维护升级的时候不需要停机.4.具有Ubuntu和CentOS 的启动脚本5.停止不稳定的进程(避免无限循环)6.控制台检测7.提供 HTTP API8.远程控制和实时的接口API ( Nodejs 模块,允许和PM2进程管理器交互 )

安装

npm install -g pm2

用法

$ npm install -g pm2 命令行全局安装pm2
$ pm2 start app.js 启动app项目
$ pm2 list 列出由pm2管理的所有进程信息,还会显示一个进程会被启动多少次,因为没处理的异常。

关于 Node 集群相关推荐

  1. 单机上搭建Node集群

    搭建Node集群需要复制进程,而且通过主从模式并行处理业务.主进程不负责具体的业务处理,而是负责调度或管理工作进程,它是趋向于稳定的.工作进程负责具体的业务处理. 关于本 Node 进程的介绍请看No ...

  2. 树莓派4B 4G Ubuntu 20.04 arm64位 安装 Kubernetes 1.18.5 单master 双node集群

    简介 本文章通过从零开始,最精简的初始化系统一步步配置完成K8S的安装,尽量介绍清楚各软件安装环境.作用,减少个人之间树莓派系统配置差异带来的异常排查困难.本次教程前提:需要会linux简单的操作 本 ...

  3. Node.js:浅析高并发与分布式集群

    Node特性:高并发 在解释node为什么能够做到高并发之前,不妨先了解一下node的其他几个特性: 单线程 我们先来明确一个概念,即:node是单线程的,这一点与JavaScript在浏览器中的特性 ...

  4. 巨详细的prometheus+grafana实现服务器(集群)性能监控,并学着调用prometheus的api

    目录 1.添加机器状态监控节点(node集群配置:每台要监控的服务器都需要安装一个node) 2.安装prometheus(只需要安装一个总控prometheus,yml配置文件中配置好各个node节 ...

  5. spark之12:集群模式概述

    spark之12:集群模式概述 @(SPARK)[spark, 大数据] 英文原文地址:https://spark.apache.org/docs/latest/cluster-overview.ht ...

  6. 使用 C# sdk 连接 高可用的 rabbitmq 镜像集群

    我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想高端大气上档次,一定需要拿出高可用的东西出来,这不本篇就跟大家说一下cluster的概念,rabbitm ...

  7. 搭建高可用的rabbitmq集群 + Mirror Queue + 使用C#驱动连接

    我们知道rabbitmq是一个专业的MQ产品,而且它也是一个严格遵守AMQP协议的玩意,但是要想骚,一定需要拿出高可用的东西出来,这不本篇就跟大家说 一下cluster的概念,rabbitmq是erl ...

  8. Hadoop HA集群的搭建

    HA 集群搭建的难度主要在于配置文件的编写, 心细,心细,心细! ha模式下,secondary namenode节点不存在... 集群部署节点角色的规划(7节点) ----------------- ...

  9. Redis Cluster集群知识学习总结

    Redis集群解决方案有两个: 1)  Twemproxy: 这是Twitter推出的解决方案,简单的说就是上层加个代理负责分发,属于client端集群方案,目前很多应用者都在采用的解决方案.Twem ...

最新文章

  1. 在Heroku上扩展ipify服务
  2. SQL:waitfor的使用
  3. TCP/IP模型的各层的作用
  4. 响应式织梦通用企业网站后台模板(自适应手机端)
  5. 百度SEO站群404二次元时间倒计时页面源码
  6. Linux操作系统基础原理
  7. 对可道云KodExplorer去掉版权简单破解方法
  8. html 阴历阳历转换,本人花了一个星期的时间,使用ASP代码获得公历并转换成农历时间(2021年至2100年)...
  9. javascript nonono
  10. echarts 实现温度计
  11. Python实现《人民的名义》关系可视化
  12. uniapp css实现轮播图片逐渐放大效果
  13. cad渐开线齿轮轮廓绘制_CAD渐开线齿形怎么绘制
  14. Java十进制转换为二进制算法
  15. 直接访问html网址怎么输入,如何设置输入IP地址就直接访问到某一个网站
  16. C++ OpenCV特征提取之KAZE和AKAZE的匹配
  17. scrapy-爬取豆瓣电影排行250
  18. 应广PMS171B(1)--概述配置端口输出高低电平
  19. unity结合MMD发布android不显示模型不播放动画问题解决方法
  20. 蔬菜类别二级计算机,蔬菜计算机编码 蔬菜商品分类和代码.pdf

热门文章

  1. 代码贡献受 Linux 之父亲自点名赞赏,酷派奖励员工 10 万股期权!
  2. 重返商用计算市场,紫光计算机要做数字化转型生意
  3. 物联网的中场和华为鸿蒙的机会
  4. 2020 年帮你加薪的 7 个小习惯
  5. 神龙神龙你擦亮眼,阿里巴巴要“上天”!
  6. BAT 数据披露:缺人!110万AI人才缺口,两者矛盾,凉凉了!
  7. 收下这份说明书,原来迈进智能计算的大门如此简单
  8. 多媒体技术开发迎来新常态
  9. 那些年 iOS 升级踩过的坑!
  10. Kotlin 势必取代 Java?