javascript - 노드와 Java 동시성 시나리오의 비교입니다. 설명해주세요.
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-17 10:08:00
0
1
529

단일 코어CPU에 노드 프로그램이 설치되어 있다고 가정해 보겠습니다. 프로그램은 매우 간단합니다. 요청이 들어오면 5초의 지연으로 결과가 반환됩니다. 동기화뭔가를 합니다) 3개의 요청이 동시에 들어오는 경우 결과는 다음과 같습니다.

시나리오 1: 첫 번째 요청은 5초 후에 결과를 얻고, 두 번째와 세 번째 요청은 10초와 15초 후에 결과를 얻습니다.

시나리오 2: 모든 요청 5초 후에 결과를 받으세요

java+tomcat으로 바꾸면 어떤 시나리오가 될까요? 다들 감사합니다!

曾经蜡笔没有小新
曾经蜡笔没有小新

모든 응답(1)
洪涛

동기인 경우 지연은 5초이고 node.js는 클러스터 및 기타 최적화를 추가하지 않고도 간단한 단일 스레드 작업입니다同步的 延迟 5秒,且 node.js 为简单的单线程运行,不加入 cluster 等优化

const start = Date.now();
while(Date.now() - start < 5000) {
    ;   
}
return res.send();

那么,多个请求同时发起时,场景1

但通常在 node.js 很少真的碰到完全阻塞的同步等待 5 秒,如果是下列情况:

setTimeOut(() => { return res.send(); }, 5000);

那结果当然是场景2 으아아아

그러다가 동시에 여러 요청이 시작되면 시나리오 1

그러나 일반적으로 node.js에서는 다음 상황이 발생하는 경우 완전히 차단된 동기화 대기 5초가 발생하는 경우가 거의 없습니다.

으아아아

결과는 당연히 시나리오 2#🎜🎜# #🎜🎜#Java의 경우 멀티스레딩을 통해 동시성을 지원하는데, 예를 들어 동시성이 3이면 대략적으로 시나리오 2라고 볼 수 있습니다. 물론 관련된 스레드 오버헤드로 인해 동시성이 증가한 후에는 메모리 사용량이 node.js 모델을 훨씬 초과하게 됩니다#🎜🎜# #🎜🎜#사실 이것이 바로 우리가 node.js가 IO 집약적이고 컴퓨팅 성능이 낮은 시나리오에 더 적합하다고 말하는 이유입니다. 내 다른 답변 #🎜🎜#을 참조할 수 있습니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!