天天看點

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設計思想

繼續閱讀