image.png

一个带有负载均衡的开源的基于 nodejs 的应用进程管理器,一般是用于 nodejs 应用程序的守护进程最佳选择。

主要特性

  • 内建负载均衡(使用 Node cluster 集群模块)
  • 后台运行
  • 0 秒停机重载
  • 具有 Ubuntu 和 CentOS 的启动脚本
  • 停止不稳定的进程(避免无限循环)
  • 控制台检测
  • 提供 HTTP API
  • 远程控制和实时的接口 API(Nodejs 模块,允许和 PM2 进程管理器交互)

    安装及使用

    1. 操作

    启动:pm2 start 文件名
    启动时添加启动节点实例(规定数量)--watch代表监听文件变化:pm2 start app.js --watch -i 2
    根据CPU核数启动节点实例:pm2 start app.js -i max
    查看日志:pm2 logs
    查看pm2控制的app列表:pm2 list
    停止:pm2 stop appName
    停止pm2:pm2 kill
    开机自启动:pm2 startup
    相关代码: ```javascript // app.js 最简单的负载均衡示例,随机 Error const http = require(‘http’) const server = http.createServer((req, res) => { // 随机 Error Math.random() > 0.5 ? aa() : ‘2’; res.end(‘Hello’) })

// 除了使用 server 启动,还可以抛出当前模块 // module.parent 判断为空,说明是当前这个模块是没有父亲,说明当前模块为主模块,是node直接引用的 // 子模块是有 parent 的 if(!module.parent) { server.listen(9527) } else { module.exports = server }

  1. 截图如下:<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/388396/1628477381566-68a539f9-f576-4f17-b50a-78a847c2cb5a.png#align=left&display=inline&height=183&id=u5a850842&margin=%5Bobject%20Object%5D&name=image.png&originHeight=183&originWidth=937&size=27356&status=done&style=none&width=937)<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/388396/1628477073965-7fe8c835-e8ae-49e4-bc96-09f40849bf8d.png#align=left&display=inline&height=408&id=u89f44c57&margin=%5Bobject%20Object%5D&name=image.png&originHeight=408&originWidth=943&size=57223&status=done&style=none&width=943)
  2. <a name="n95TD"></a>
  3. ## 2. process.yml
  4. 配置一个 process.yml 来辅助配置启动<br />命令行:`pm2 start process.yml`
  5. ```nginx
  6. apps:
  7. - script : app.js
  8. instances: 2
  9. watch : true
  10. env :
  11. NODE_ENV: production

image.png

特性解析

负载均衡

负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

简单点儿说,一台服务器(进程)的吞吐量太大,爆炸宕机了,所以业务需求将吞吐量分散开,好几个服务器(进程)一起做处理,让一堆服务器(进程)一起做相同一件事儿,并且尽可能的平均分配,保证所有服务器(进程)的活儿都差不多。
这里面涉及到不同的均衡算法,轮询法、随机法、最小连接法。目前最小链接法比较受欢迎,还有不同的负载均衡的技术、不同的应用等。

0秒停机重载

意味着维护升级时无需停机

pm2 监控文件更改时自动启动,并且能够配置相关重载参数,并不一定仅仅是立即重载。

其余特性需要后续实践和查询