2015-06-02 27 views
2

我看到很多使用集羣npm模塊和Express Web服務器的例子。例如:NPM集羣模塊和偵聽不同的端口

http://rowanmanning.com/posts/node-cluster-and-express/

但是,如果你創建「每個核心」使用羣集模塊的新的Web服務器,沒有每個實例有聽不同的端口上?我看到的大部分示例似乎都不會增加或更改http服務器正在偵聽的端口。在這種情況下,您是否需要代理服務器來路由請求,或者您可以不用?此外,當使用具有其默認配置的羣集時,所有節點偵聽同一端口,當向服務器發出請求時,所有進程(針對每個內核)都會作出響應。看起來很奇怪,我會認爲集羣模塊會管理它,以便只有一個內核會響應每個請求。

+2

_「集羣模塊允許您輕鬆地創建子進程**所有的共享服務器端口**」 _([這裏](https://nodejs.org/ api/cluster.html#cluster_cluster),還有[here](https://nodejs.org/api/cluster.html#cluster_how_it_works))。 – robertklep

+0

是的,但爲什麼@robertklep –

+1

有用的問題和答案!謝謝,所有。 – Connor

回答

3

不,你不需要代理或增加分叉進程的端口。

當您使用羣集模塊。有一個控制分叉進程的主進程。這是通過其他子進程分派請求的主進程。所以沒有端口衝突,主進程處理。

從node.js的文檔:

「羣集模塊支持分發的傳入連接的兩種方法

第一個(和默認一個上除Windows所有平臺),是廿四。 robin方法,其中主進程偵聽端口,接受新連接並以循環方式在工作人員之間分發它們,並帶有一些內置智能以避免工作進程超載。「

,你可以在這裏閱讀:https://nodejs.org/api/cluster.html#cluster_how_it_works

+0

答案不符合問題。當端口被共享時,很難跟蹤每個線程。 – shijin