我已經讀完了this article,並且花了幾個小時研究Node.js中的聚類(分叉過程)主題。Node.js集羣 - 什麼決定負載平衡?
我從文章中看不出來的東西是什麼決定哪個工作進程獲得請求X,如果他們都在同一個端口上進行偵聽?
有沒有辦法讓主進程引導請求,還是隻是隨機的?
我已經讀完了this article,並且花了幾個小時研究Node.js中的聚類(分叉過程)主題。Node.js集羣 - 什麼決定負載平衡?
我從文章中看不出來的東西是什麼決定哪個工作進程獲得請求X,如果他們都在同一個端口上進行偵聽?
有沒有辦法讓主進程引導請求,還是隻是隨機的?
有一個很好的解釋here。長話短說,取決於您的節點版本,有兩種不同的行爲:
節點0.8-0.10(和Windows上的0.12+):每個進程在端口上偵聽。當一個新的連接進入時,操作系統決定喚醒哪一個。在某些操作系統下的某些應用程序中,這不能很好地工作,並且留下幾個進程佔絕大多數的連接;在大多數情況下它工作得很好。
節點0.12+(在Windows上除外):主進程偵聽端口。當他們進來時,它以循環方式將它們交給工人。
無論在哪種情況下,您的應用程序都應將其視爲隨機(儘管您可能會假設合理的負載平衡特性)。但是,如果由於某種原因需要更精細的控制,即文章中的一句話(請注意,它是由一個node.js的核心貢獻者,所以這裏有一些機構):
談到選擇算法到的東西,可由開發人員配置或插入是正在考慮的變化。
說你可能會得到你要的東西。有關此選項的似乎有an issue on Github。
不知道約0.12,但我認爲它在0.11.2是RR。這裏是相關的[commit](https://github.com/joyent/node/commit/e72cd41) – user568109
@ user568109有趣。它看起來像是「v0.12中的新內容」,這篇文章意味着這是它的第一個主要版本,它只包含偶數。已更新爲更接近文章語言的內容(僅引用主要版本0.8,0.10和0.12)。 –