搜尋

首頁  >  問答  >  主體

node.js - nodejs cluster中server是由谁创建的

简要代码如下:
if(cluster.isMaster){

   cluster.fork();
   cluster.fork();

}else{

http.createServer(function(){
    ...
}).bind(8080);

}
想问一下,为什么server的创建要写在else里面?那意思不就是 在子进程中创建server,运行了两次,就是创建了2个server?而且都是绑定的同样的端口号?求指点。

PHP中文网PHP中文网2876 天前385

全部回覆(2)我來回復

  • PHP中文网

    PHP中文网2017-04-17 16:03:28

    我是這麼理解的:
    檔案開始執行的時候
    cluster.isMaster 是true
    然後進入true 分支進行fork
    每fork一次新建一個線程進入這個線程會從頭開始執行檔
    cluster.isMaster 是此時false
    false 分支
    執行創建server
    至於為什麼監聽的是同一個連接埠
    實際上只有主執行緒監聽這個連接埠
    cluster 主執行緒會實作分發器
    將請求分配給這個連接埠上的其他執行緒

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 16:03:28

    由master進程創建並監聽端口,當請求到達伺服器master進程accept,並分發給worker進程

    回覆
    0
  • 取消回覆