suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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中文网2786 Tage vor370

Antworte allen(2)Ich werde antworten

  • PHP中文网

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

    我是这么理解的:
    文件开始执行的时候
    cluster.isMaster 是 true
    然后进入 true 分支进行fork
    每fork一次 新建一个线程 这个线程会从头开始执行文件
    此时cluster.isMaster 是 false
    进入 false 分支
    执行创建 server
    至于为什么监听的是同一个端口
    实际上只有主线程监听这个端口
    cluster 主线程会实现分发器
    将请求分配给 这个端口上的其他线程

    Antwort
    0
  • 高洛峰

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

    由master进程创建并监听端口,当请求到达服务器master进程accept,并分发给worker进程

    Antwort
    0
  • StornierenAntwort