Node.js 단순 입문 패스
쉽게 말 하면 Node.js 는 서버 에서 실행 되 는 JavaScript 입 니 다.
Node.js 는 Chrome JavaScript 가 실 행 될 때 만 든 플랫폼 입 니 다.
Node.js 는 이벤트 구동 I/O 서버 JavaScript 환경 으로,Google V8 엔진(Google Chrome 브 라 우 저가 사용 하 는 JavaScript 실행 환경)을 기반 으로 합 니 다.
V8 엔진 은 자 바스 크 립 트 를 실행 하 는 속도 가 매우 빠 르 고 성능 이 매우 좋다.
2.왜 NodeJS 를 선 택 했 나
만약 당신 이 전단 프로그래머 라면 PHP,Python,Ruby 등 동적 프로 그래 밍 언어 를 모 르 고 자신의 서 비 스 를 만 들 고 싶다 면 Node.js 는 매우 좋 은 선택 입 니 다.
Node.js 는 서버 에서 실행 되 는 JavaScript 입 니 다.Javascript 에 익숙 하 다 면 Node.js 를 쉽게 배 울 수 있 을 것 입 니 다.
물론 백 엔 드 프로그래머 라면 고성능 서 비 스 를 배치 하고 싶다 면 Node.js 를 배 우 는 것 도 좋 은 선택 입 니 다.
3.NodeJS 의 특징
NodeJS 홈 페이지 의 소 개 를 살 펴 보 겠 습 니 다.
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
그 특징 은:
1.자 바스 크 립 트 실행 환경
2.Chrome V8 엔진 에 의존 하여 코드 해석
3.이벤트 구동
4.비 차단 I/O
5.경 량,신축 가능,실시 간 데이터 상호작용 에 적합
6.단일 프로 세 스,단일 스 레 드
비동기,이벤트 구동 모델
서버 측의 응답 을 기다 리 기 위해 요청 을 해 야 합 니 다.하지만 은행 사례 와 달리 이번에 주문 을 하고 번 호 를 받 았 습 니 다.
번 호 를 받 으 면 우 리 는 위치 에서 기다 리 고 우리 뒤의 요 구 는 계속 처 리 됩 니 다.똑 같이 번 호 를 받 고 옆 에 가서 기다 리 면 접대원 이 계속 처리 할 수 있 습 니 다.
음식 번호 가 나 오 면 번 호 를 부 르 고 우 리 는 자신의 음식 을 받 아 후속 처 리 를 한다(식사).
이 번 호 를 부 르 는 동작 은 NodeJS 에서 리 셋(Callback)이 라 고 하 는데 이벤트(요리,I/O)처리 가 끝 난 후에 도 뒤의 논리(식사)를 계속 수행 할 수 있 습 니 다.
이것 은 NodeJS 의 현저 한 특징,비동기 체제,사건 구동 을 나 타 냈 다.
전체 과정 에서 새로운 사용자 의 연결(주문)을 막 지 않 았 고 주문 한 사용자 와 요리사 의 연결 을 유지 할 필요 가 없습니다.
Node.Js 는 이벤트 구동 모델 을 사용 하여 웹 서버 가 요청 을 받 으 면 닫 고 처리 한 다음 다음 다음 웹 요청 을 서비스 합 니 다.이 요청 이 완료 되면 처리 대기 열 에 다시 놓 여 있 습 니 다.대기 열 에 도착 하면 이 결 과 는 사용자 에 게 되 돌아 갑 니 다.이 모델 은 매우 효율 적 이 고 확장 성 이 매우 강하 다.웹 서버 가 요청 을 받 아들 여 읽 기와 쓰기 동작 을 기다 리 지 않 기 때문이다.(이것 은 비 차단 식 IO 또는 이벤트 구동 IO 라 고도 불 린 다)
이러한 메커니즘 을 바탕 으로 이론 적 으로 사용자 가 연결 을 요청 하면 NodeJS 가 모두 응답 할 수 있 기 때문에 NodeJS 는 자바,PHP 프로그램 보다 높 은 병발 량 을 지원 할 수 있다.
이벤트 대기 열 을 유지 하 는 데 도 비용 이 필요 하지만 NodeJS 가 단일 스 레 드 이기 때문에 이벤트 대기 열 이 길 수록 응답 을 받 는 시간 이 길 어 지고 병발 량 이 부족 합 니 다.
NodeJS 가 병렬 연결 문 제 를 어떻게 해결 하 는 지 정리 해 보 세 요.
서버 에 연결 하 는 방식 을 변경 합 니 다.모든 연결 발사(emit)는 NodeJS 엔진 프로 세 스에 서 실행 되 는 이벤트(Event)를 이벤트 대기 열 에 넣 습 니 다.
모든 연결 에 새로운 OS 스 레 드 를 만 드 는 것 이 아 닙 니 다.
I/O 차단
NodeJS 가 해결 한 또 다른 문 제 는 I/O 차단 입 니 다.이러한 업무 장면 을 보 세 요.여러 데이터 소스 에서 데 이 터 를 끌 어 낸 다음 에 처리 해 야 합 니 다.
(1)직렬 로 데 이 터 를 가 져 오 는 것 은 일반적인 해결 방안 입 니 다.PHP 를 예 로 들 면
profflee 와 timeline 을 가 져 오 는 데 각각 1S 가 필요 하 다 면 직렬 가 져 오기 에는 2S 가 필요 합 니 다.
(2)NodeJS 비 차단 I/O,발사/감청 사건 으로 실행 과정 제어
NodeJS 가 I/O 이 벤트 를 만나면 실행 할 스 레 드 를 만 들 고 메 인 스 레 드 는 계속 아래로 실 행 됩 니 다.
따라서 프로필 의 동작 으로 I/O 이 벤트 를 터치 하면 타임 라인 을 가 져 오 는 동작 이 바로 실 행 됩 니 다.
두 동작 을 병행 하여 각각 1S 가 필요 하 다 면 총 시간 은 1S 이다.
그들의 I/O 작업 이 실 행 된 후 이벤트,profflee,timeline 을 발사 합 니 다.
이벤트 에이전트 가 받 은 후에 다음 논 리 를 계속 실행 하 는 것 이 NodeJS 비 차단 I/O 의 특징 입 니 다.
요약:
자바,PHP 도 병렬 요청(하위 스 레 드)을 실현 할 수 있 지만 NodeJS 는 리 셋 함수(Callback)와 비동기 체 제 를 통 해 자 연 스 럽 게 할 수 있 습 니 다.
4.NodeJS 의 장단 점
장점:
1.높 은 병발(가장 중요 한 장점)
2.I/O 집약 형 응용 에 적합
단점:
1.CPU 밀집 형 응용 에 적합 하지 않 음;CPU 밀집 형 응용 이 Node 에 가 져 온 도전 은 주로 자바 스 크 립 트 단일 스 레 드 의 원인 으로 인해 장시간 실행 되 는 계산(예 를 들 어 큰 순환)이 있 으 면 CPU 시간 영 화 를 방출 하지 못 하고 후속 I/O 를 시작 할 수 없습니다.
해결 방안:대형 연산 임 무 를 여러 개의 작은 임무 로 분해 하여 연산 이 적시에 방출 되 고 I/O 호출 의 시작 을 막 지 않도록 합 니 다.
2.단일 핵 CPU 만 지원 하고 CPU 를 충분히 이용 할 수 없습니다.
3.신뢰성 이 낮 습 니 다.코드 의 특정한 부분 이 무 너 지면 시스템 전체 가 무 너 집 니 다.
원인:단일 프로 세 스,단일 스 레 드
솔 루 션:(1)Nnigx 역방향 에이전트,부하 균형,여러 프로 세 스 를 열 고 여러 포트 를 연결 합 니 다.
(2)여러 프로 세 스 가 같은 포트 를 감청 하고 cluster 모듈 을 사용 합 니 다.
4.오픈 소스 구성 요소 라 이브 러 리 의 품질 이 고 르 지 않 고 업데이트 가 빠 르 며 아래로 호 환 되 지 않 습 니 다.
5.Debug 불편,오류 stack trace 없 음
총결산
위 에서 말 한 것 은 편집장 이 소개 한 Node.js 의 간단 한 입문 전 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Express + AWS S3 이미지 업로드하기웹 사이트 및 모바일 애플리케이션 등에서 원하는 양의 데이터를 저장하고 보호할 수 있다. 데이터에 대한 액세스를 최적화, 구조화 및 구성할 수 있는 관리 기능을 제공한다. AWS S3 에 저장된 객체에 대한 컨테이너...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.