我們先大致看看 NodeJS 提供了哪些和進(jìn)程管理有關(guān)的 API。這里并不逐一介紹每個(gè) API 的使用方法,官方文檔已經(jīng)做得很好了。
官方文檔: http://nodejs.org/api/process.html
任何一個(gè)進(jìn)程都有啟動進(jìn)程時(shí)使用的命令行參數(shù),有標(biāo)準(zhǔn)輸入標(biāo)準(zhǔn)輸出,有運(yùn)行權(quán)限,有運(yùn)行環(huán)境和運(yùn)行狀態(tài)。在 NodeJS 中,可以通過 process 對象感知和控制 NodeJS 自身進(jìn)程的方方面面。另外需要注意的是,process 不是內(nèi)置模塊,而是一個(gè)全局對象,因此在任何地方都可以直接使用。
官方文檔: http://nodejs.org/api/child_process.html
使用 child_process 模塊可以創(chuàng)建和控制子進(jìn)程。該模塊提供的 API 中最核心的是.spawn,其余 API 都是針對特定使用場景對它的進(jìn)一步封裝,算是一種語法糖。
官方文檔: http://nodejs.org/api/cluster.html
cluster 模塊是對 child_process 模塊的進(jìn)一步封裝,專用于解決單進(jìn)程 NodeJS Web 服務(wù)器無法充分利用多核 CPU 的問題。使用該模塊可以簡化多進(jìn)程服務(wù)器程序的開發(fā),讓每個(gè)核上運(yùn)行一個(gè)工作進(jìn)程,并統(tǒng)一通過主進(jìn)程監(jiān)聽端口和分發(fā)請求。