検索

ホームページ  >  に質問  >  本文

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中文网2787日前374

全員に返信(2)返信します

  • PHP中文网

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

    これは私が理解していることです:
    ファイルの実行が開始されると、
    cluster.isMaster は true
    次に true ブランチに入り、フォークします
    フォークするたびに、新しいスレッドが作成されますこのスレッドは最初からファイルを実行します
    この時点ではcluster.isMasterはfalseです
    falseブランチに入ります
    サーバーの作成を実行します
    同じことをリッスンしている理由はport
    実際には、メイン スレッドだけがこのポートをリッスンしています
    クラスタ メイン スレッド このポート上の他のスレッドにリクエストを分散するためにディスパッチャ
    が実装されます

    返事
    0
  • 高洛峰

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

    マスタープロセスによってポートが作成され、リッスンされます。リクエストがサーバーマスタープロセスに到達すると、リクエストが受け入れられ、ワーカープロセスに配布されます。

    返事
    0
  • キャンセル返事