閱讀目錄

由表及里

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

code1

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