찾다

 >  Q&A  >  본문

javascript - 노드와 Java 동시성 시나리오의 비교입니다. 설명해주세요.

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

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

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

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

曾经蜡笔没有小新曾经蜡笔没有小新2789일 전589

모든 응답(1)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-05-17 10:10:00

    동기인 경우 지연은 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 집약적이고 컴퓨팅 성능이 낮은 시나리오에 더 적합하다고 말하는 이유입니다. 내 다른 답변 #🎜🎜#을 참조할 수 있습니다.

    회신하다
    0
  • 취소회신하다