저는 nodejs와 expressjs 프레임 워크를 사용하여 매우 기본적인 웹 사이트를 구현하고 있습니다. 아이디어는 사용자가 웹 사이트를 입력하고 서버에서 CPU 집약적 인 작업을 트리거하는 버튼을 클릭하고 작업 완료시 브라우저에서 메시지를 가져 오는 것입니다.내 nodejs 앱을 여러 사용자에게 제공하려면 어떻게해야하나요?
나를 혼란스럽게하는 부분은 이벤트 루프를 차단하지 않고 각 사용자에 대해이 작업을 수행하는 방법입니다. 따라서 다른 사용자가 다른 작업을 마칠 때까지 기다릴 필요가 없습니다. 또한 각 사용자에 대해 사용 된 자원 (객체, 변수 ..)의 새 인스턴스를 사용하는 방법.
놀고 놀고 난 후에, 나는 child-process를 보았다. 기본적으로, 각 사용자에 대해 새로운 child_process를 포크화할 것을 고려했기 때문에 정렬에 걸리는 시간은 이벤트 루프를 차단하지 않습니다. 그러나, 이것이 그러한 시나리오에서 가장 좋은 것인지 아직 확신 할 수 없습니다.
이제 저는 단 한 명의 사용자로 작업을 완료했습니다.하지만 다른 사용자를 시작하려고하면 작업이 복잡해지고 변수가 공유됩니다. 나는 모듈에서 선언 된 전역 변수를 사용해서는 안되지만 하나의 모듈 내에서 함수간에 변수를 공유하는 또 다른 방법이 될 수 있지만 각 사용자마다 다릅니다.
나는이 질문이 매우 기본적인 것처럼 들리 겠지만, 노드 j가 어떻게 각기 다른 사용자들에게 새로운 변수, 각 개별 사용자와 관련된 객체를 제공하는지에 대한 아이디어를 놓치고있다.
즉, 내 질문은 다음과 같습니다. 1- 노드가 여러 사용자를 동시에 어떻게 지원합니까? 2 - 언제 내가 어떻게 후드에서 새로운 하위 프로세스를 포크 팅하거나 실행할 것인가? 그리고 각 사용자 또는 CPU의 #core를 기반으로해야합니까? 3 각 사용자에 대해 내 응용 프로그램에서 리소스를 분리하는 방법 각 사용자는 자신의 카운터, 이메일 및 기타 객체와 변수를 가지고 있습니다. 4- 언제 자녀의 과정을 중단해야합니까?
미리 감사드립니다.
CODE : MY 정렬 모듈
var cp = require('child_process');
var child= cp.fork('./routes/mysort-module');
exports.user=function(req,res){
// child = new cp.fork('./routes/mysort-module'); // Should I make new child for each user?
child.on('message',function(m){ res.send('DONE');}
child.send('START PROCESS'); // Forking a cpu-intensive task in mysort-module.js
}
: 당신은 당신의 질문을 분할하려고한다
var variables = require(...);
//GLOBAL VARIABLES to be shared among different functions in this module
process.on('message',function(m){
//sort cpu-intensive task
process.send('DONE');
});
// OTHER FUNCTIONS in THE MODULE that make use of global variables.
답변 주셔서 감사합니다. 세션을 확실히 고려해 보겠습니다. 그리고 나누어 준 제안에 감사드립니다. 나는 또한 그것이 한 가지 질문에 너무 많은 것을 알았습니다!. 그러나, 나는 아직도 질문 3에 대해 확신하지 못한다. 아마도 내 q를 올바르게 형성하지 못했을 것이다. 내 질문은, 각 요청에 대해 자식 프로세스를 시작하는 것이 타당한가? 또는 프로세스 수는 코어 수로 제한되어야합니다! 감사! – saigammar