이것이 기본/운영 체제 수준(주로 Unix 구현/소켓 API 관점에서)에서 정확히 어떻게 작동합니까?
클러스터 모듈 설명서에는 다음과 같이 나와 있습니다.
"주요 프로세스는 포트에서 수신 대기하고 새로운 연결을 수락하여 라운드 로빈 방식으로 작업자에게 배포합니다."
이것은 메인 프로세스가 들어오는 연결에서 accept()를 개별적으로 처리/호출한 다음 반환된 소켓 설명자를 일부 IPC 메커니즘(Unix 도메인 소켓?)을 통해 미리 분기된 하위 프로세스에 전달한다는 것을 의미합니까? 프로세스) 다중화 메커니즘(예: epoll 인스턴스)?
Node.js의 내부 작동 방식을 더 잘 이해하려고 노력 중이지만 이 수준에서는 명확한 정보를 많이 찾을 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다.
감사해요
답변1
바라보다child.send()
nodejs child_process 모듈에서. 즉, 다음을 수행합니다.
child.send('socket', socket);
어디에 'socket'
특수 메시지 이름이 있고 nodejs 소켓 개체에 대한 참조를 보냅니다. 그런 다음 Nodejs는 child_process 모듈의 하위 수준 항목을 처리하고 실제 운영 체제 소켓 핸들을 하위 프로세스로 보낸 다음 새 Nodejs 소켓 개체를 다른 쪽 끝에 연결합니다.
그리고 다음은 해당 주제에 관한 기사의 인용문입니다.Node.JS의 포크된 프로세스에 소켓 보내기.