一、目前可以用的现成库
功能 | forever | nodemon | pm2 | node-supervisor |
---|---|---|---|---|
后台 | √ | √ | √ | × |
日志 | √ | × | √ | × |
热重载 | √ | √ | √ | √ |
监控 | × | × | √ | × |
集群 | × | × | √ |
推荐用 forever,相比 pm2,少了 cluster 功能,负载均衡这一块需要交给运维自己配。
二、基于 egg-cluster 的移植方案
阿里的后端框架 egg.js 的进程管理没有选型 pm2,而是自己开发了一套多进程模型,叫 egg-cluster。其支持:
- 多进程模型和进程间通讯
- 完整进程守护
- 增强的集群功能
但其不支持监控。
拉代码试跑了一下,这套方案和他们的 egg.js 框架强绑定,想把进程管理的相关逻辑单独分离出来,需要花费时间,下午研究了大约 3 小时,暂未找到头
绪。
三、使用 linux 提供的系统命令
采用systemd管理进程,express官方文档推荐此方案。
https://www.axllent.org/docs/nodejs-service-with-systemd/
这块是运维需要参与的地方,缺点是比较配置比较重,对开发来说学习成本高