단일 코어CPU에 노드 프로그램이 설치되어 있다고 가정해 보겠습니다. 프로그램은 매우 간단합니다. 요청이 들어오면 5초의 지연으로 결과가 반환됩니다. 동기화뭔가를 합니다) 3개의 요청이 동시에 들어오는 경우 결과는 다음과 같습니다.
시나리오 1: 첫 번째 요청은 5초 후에 결과를 얻고, 두 번째와 세 번째 요청은 10초와 15초 후에 결과를 얻습니다. 시나리오 2: 모든 요청 5초 후에 결과를 받으세요
java+tomcat으로 바꾸면 어떤 시나리오가 될까요? 다들 감사합니다!
동기
인 경우 지연은 5초이고 node.js는 클러스터 및 기타 최적화를 추가하지 않고도 간단한 단일 스레드 작업입니다同步的
延迟 5秒,且 node.js 为简单的单线程运行,不加入 cluster 等优化那么,多个请求同时发起时,场景1
但通常在 node.js 很少真的碰到完全阻塞的
同步等待 5 秒
,如果是下列情况:那结果当然是
그러다가 동시에 여러 요청이 시작되면 시나리오 1场景2
으아아아동기화 대기 5초
가 발생하는 경우가 거의 없습니다.으아아아
결과는 당연히시나리오 2
#🎜🎜# #🎜🎜#Java의 경우 멀티스레딩을 통해 동시성을 지원하는데, 예를 들어 동시성이 3이면 대략적으로 시나리오 2라고 볼 수 있습니다. 물론 관련된 스레드 오버헤드로 인해 동시성이 증가한 후에는 메모리 사용량이 node.js 모델을 훨씬 초과하게 됩니다#🎜🎜# #🎜🎜#사실 이것이 바로 우리가 node.js가 IO 집약적이고 컴퓨팅 성능이 낮은 시나리오에 더 적합하다고 말하는 이유입니다. 내 다른 답변 #🎜🎜#을 참조할 수 있습니다.