閱讀目錄

由表及里

HTTP服務(wù)器用于響應(yīng)來自客戶端的請求,當(dāng)客戶端請求數(shù)逐漸增大時服務(wù)端的處理機(jī)制有多種,如tomcat的多線程、nginx的事件循環(huán)等。而對于node而言,由于其也采用事件循環(huán)和異步I/O機(jī)制,因此在高I/O并發(fā)的場景下性能非常好,但是由于單個node程序僅僅利用單核cpu,因此為了更好利用系統(tǒng)資源就需要fork多個node進(jìn)程執(zhí)行HTTP服務(wù)器邏輯,所以node內(nèi)建模塊提供了child_process和cluster模塊。利用child_process模塊,我們可以執(zhí)行shell命令,可以fork子進(jìn)程執(zhí)行代碼,也可以直接執(zhí)行二進(jìn)制文件;利用cluster模塊,使用node封裝好的API、IPC通道和調(diào)度機(jī)可以非常簡單的創(chuàng)建包括一個master進(jìn)程下HTTP代理服務(wù)器 + 多個worker進(jìn)程多個HTTP應(yīng)用服務(wù)器的架構(gòu),并提供兩種調(diào)度子進(jìn)程算法。本文主要針對cluster模塊講述node是如何實現(xiàn)簡介高效的服務(wù)集群創(chuàng)建和調(diào)度的。那么就從代碼進(jìn)入本文的主題:

code1

const cluster = require('cluster');const http = require('http');if (clus