Como o Node.js / o módulo de cluster passa novas conexões do processo mestre / pai para processos filhos?

1

Como exatamente isso funciona sob o capô / no nível do sistema operacional (principalmente em implementações Unix / da perspectiva da API sockets)?

A documentação do módulo de cluster diz:

"o processo mestre atende em uma porta, aceita novas conexões e as distribui pelos trabalhadores em uma forma round-robin"

Isso significa que somente o processo mestre manipula / chama accept () nas conexões de entrada e passa o descritor de soquete retornado para um processo filho pré-bifurcado por meio de algum mecanismo IPC (soquetes de domínio Unix?), onde é presumivelmente registrado com um mecanismo de multiplexação local (para esse processo) (por exemplo, uma instância epoll)?

Estou tentando entender melhor o funcionamento interno do Node.js, mas não consigo encontrar muitas informações definitivas nesse nível. Qualquer ajuda é muito apreciada.

Obrigado

    
por froglegs 14.05.2017 / 01:56

1 resposta

1

Veja child.send() no módulo child_process do nodejs. Em poucas palavras, você faz:

child.send('socket', socket);

Em que 'socket' é um nome de mensagem especial e você envia uma referência ao objeto de soquete nodejs. Em seguida, o Nodejs lida com coisas ocultas no módulo child_process para enviar o identificador de soquete do SO real para o processo filho e, em seguida, conecta um novo objeto de soquete nodejs a ele no outro lado.

E aqui está uma referência a um artigo sobre o tópico: Enviando um soquete para um processo bifurcado no Node .JS .

    
por 14.05.2017 / 02:54