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