>웹 프론트엔드 >JS 튜토리얼 >node.js 멀티 스레딩 소개

node.js 멀티 스레딩 소개

Lisa Kudrow
Lisa Kudrow원래의
2025-02-08 13:14:10768검색

An Introduction to Node.js Multithreading

코어 포인트

JavaScript 런타임은 단일 스레드 처리를 사용하여 여러 사용자 요청을 처리 할 때 Node.js 응용 프로그램에 병목 현상을 유발할 수 있습니다. 멀티 스레딩은 이러한 병목 현상을 방지하는 데 도움이됩니다.

프로세스 관리자 및 컨테이너 오케스트레이션은 클러스터 코드를 쓰지 않고 여러 Node.js 응용 프로그램 인스턴스를 실행할 수 있으므로 실시간 서버에 이상적입니다. 컨테이너는 운영 체제를 시뮬레이션하여 응용 프로그램이 단일 장치 또는 수천 개의 기계에서 실행할 수 있도록합니다.
  • JavaScript 런타임은 단일 스레드 처리를 사용합니다. 엔진은 한 번에 하나의 작업 만 수행하며 다른 작업을 수행하려면 실행을 완료해야합니다. 단일 사용자가 응용 프로그램과 상호 작용함에 따라 브라우저에서 문제가 발생하지 않습니다. 그러나 Node.js 응용 프로그램은 수백 개의 사용자 요청을 처리 할 수 ​​있습니다. 멀티 스레딩은 응용 프로그램의 병목 현상을 방지 할 수 있습니다. 단일 사용자가 복잡한 10 초의 JavaScript 계산을 트리거 할 수있는 Node.js 웹 응용 프로그램을 고려하십시오. 이 계산이 완료 될 때까지 응용 프로그램은 다른 사용자로부터 들어오는 요청을 처리 할 수 ​​없습니다. PHP 및 Python과 같은 언어도 단일 스레드이지만 일반적으로 각 요청에서 통역사 인스턴스를 시작하는 다중 스레드 웹 서버를 사용합니다. 이것은 리소스 집약적이므로 Node.js 응용 프로그램은 일반적으로 자체 가벼운 웹 서버를 제공합니다. Node.js 웹 서버는 단일 스레드에서 실행되지만 JavaScript는 비 블로킹 이벤트 루프로 성능 문제를 완화합니다. 응용 프로그램은 다른 운영 체제 스레드에서 실행하는 파일, 데이터베이스 및 HTTP와 같은 비동기 작업을 수행 할 수 있습니다. 이벤트 루프는 계속 실행되며 I/O 작동이 완료되기를 기다리는 동안 다른 JavaScript 작업을 처리 할 수 ​​있습니다. 불행히도, 장기 실행되는 JavaScript 코드 (예 : 이미지 처리)는 이벤트 루프의 현재 반복을 차지할 수 있습니다. 이 기사는 다음 방법을 사용하여 처리를 다른 스레드로 전송하는 방법을 설명합니다. - 작업자 스레드 - 하위 프로세스 - 클러스터 - 프로세스 관리자 - 컨테이너
  • node.js Worker 스레드
  • 작업 스레드는 Node.js의 웹 워커와 동일합니다. 기본 스레드는 데이터를 별도의 스레드에서 (비동기 적으로) 처리하는 다른 스크립트로 전달합니다. 메인 스레드는 작업자 스레드가 작업을 완료하면 콜백 이벤트를 계속 실행하고 실행합니다.
  • An Introduction to Node.js Multithreading 는 JavaScript가 구조화 된 클로닝 알고리즘을 사용하여 작업자 스레드로 데이터를 전달할 때 데이터를 문자열로 직렬화합니다. 문자열, 숫자, 부울, 어레이 및 객체 - 와 같은 기본 유형을 포함 할 수 있지만 함수 는 포함 할 수 있습니다. 대부분의 객체에 복제 할 수없는 방법이 있기 때문에 데이터베이스 연결과 같은 복잡한 객체를 전달할 수 없습니다. 그러나 다음은 다음과 같습니다 .- 주 스레드에서 데이터베이스 데이터를 비동기로 읽고 결과 데이터를 작업자 스레드에 전달하십시오. - 작업자 스레드에서 다른 연결 객체를 만듭니다. 이렇게하면 시작 비용이 발생하지만 기능에 계산의 일부로 추가 데이터베이스 쿼리가 필요한 경우 가능할 수 있습니다.

    작업 스레드 데모 다음 데모는 초마다 콘솔에 현재 시간을 쓸 수있는 node.js 프로세스를 보여줍니다. 새 브라우저 탭에서 node.js 데모를 엽니 다. 그런 다음 기본 스레드에서 긴 주사위 롤 계산을 시작하십시오. 루프는 1 억 반복을 완료하여 시간의 출력을 중지합니다.

    가 완료되면 작업자 스레드에서 동일한 계산이 시작됩니다. 주사위 처리가 발생하면 시계는 계속 실행됩니다.

    작업자 프로세스는 작업에 집중할 수 있기 때문에 메인 스레드보다 약간 빠릅니다.

    ... (길이가 너무 길기 때문에 나머지 콘텐츠가 생략됩니다. 핵심 아이디어가 앞서 요약되었습니다. 후속 컨텐츠는 코드 예제이며 더 자세한 설명입니다. 필요에 따라 원본 텍스트를 선택적으로 읽을 수 있습니다.)

  • 위 내용은 node.js 멀티 스레딩 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.