PM2源码浅析

近年来,大前端和全栈的思潮下,很多公司的项目转成了node驱动,pm2做为一个带有负载均衡功能的进程管理器,是众多公司的主流方案,本文主要在个人的理解下,对pm2的原理进行了浅析,大约占用您3分钟,如有纰漏之处,敬请指正

PM2工作原理

最近在玩一个游戏,《地平线:黎明时分》,最终Boss是一名叫黑底斯的人,所谓为人,也许不对,黑底斯是一段强大的毁灭进程,破坏了盖娅主进程,从而引发的整个大陆机械兽劣化故事。

为什么要讲这么一段呢,是希望大家可以更好地理解pm2的原理,要理解pm2就要理解god和santan的关系,god和santan的关系就相当于盖娅和黑底斯在pm2中的01世界中,每一行代码每一个字节都安静的工作god就是Daemon进程 守护进程,重启进程,守护node程序世界的安宁,santan就是进程的毁灭者,异常进程的退出,杀死进程,毁灭进程等工作,都是由这位大哥操手。

架构图如下:

PM2源码浅析

god和santan通讯的方式,就是RPC

RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

执行流程图如下:

PM2源码浅析

PM2源码浅析

clinet启动关联daemon主进程

PM2源码浅析

God的监听进程方法

PM2源码浅析

god启动后,与satan建立rpc链接,调用prepare方法来完成集群启动

PM2源码浅析

satan通知god

PM2源码浅析

总结

pm2的集群,从原理是采用cluster.fork来实现的,深入理解cluser模块,精度pm2的源代码,能更好的理解pm2,更好的理解node设计思想