我们写nodejs程序,基本都会用到pm2,来启动,因为它可以帮助我们很好的守护程序,保证程序不退出。
今天我们就来研究下pm2守护进程的原理。
node Cluster
要想了解pm2守护进程原理,先了解下nodejs的Cluster。
js是单线程的,在nodejs中采用的是多进程单线程的模型。由于单线程的限制。在多核服务器上,我们往往需要启动多个进程才能最大化服务器性能。
一般通过一个主进程master管理多个子进程(worker)的方式实现集群。
pm2的实现
pm2是基于cluster模块进行了封装。它能自动监控进程状态、重启进程、停止不稳定进程、日志存储利用等功能。
pm2可以在不修改代码等情况下做到负载均衡。
这个是pm2的业务架构图。
启动satan.js提供程序的退出、杀死方法。God.js负责维持进程的正常运行。
God进程启动后一直运行,相当于cluster中的master进行,维持worker进程的正常进行。
RPC指的是远程过程调用协议。在pm2中用于同一机器上的不同进程之间的方法调用。
守护进程
在上面图中有个叫Daemon wrapper的模块。
Daemon wrapper(守护进程包装器)它是一种用于将普通程序转换为守护进程的工具。
它可以将一个普通的程序包装成一个守护进程,使其在后台运行,并且可以在系统启动时自动启动。
Daemon wrapper通常会处理一些守护进程需要的细节,例如进程的启动、停止、重启、日志记录、进程间通信等。
本文暂时没有评论,来添加一个吧(●'◡'●)