Node.js 성능 향상 을 위 한 응용 기술 공유

3602 단어 nodejs
1.역방향 프 록 시 서버 구현
대부분의 응용 서버 에 비해 Node.js 는 대량의 네트워크 트 래 픽 을 쉽게 처리 할 수 있 지만 이것 은 Node.js 의 디자인 취지 가 아니다.
데이터 가 많은 사이트 가 있다 면 성능 을 향상 시 키 는 첫 번 째 단 계 는 Node.js 앞 에 역방향 프 록 시 서버 를 놓 는 것 입 니 다.이것 은 Node.js 서버 가 네트워크 에 직접 노출 되 지 않도록 보호 할 수 있 으 며,여러 응용 서버 를 유연 하 게 사용 하여 부하 균형 과 정적 파일 캐 시 를 할 수 있 습 니 다.

NGINX 를 사용 하여 이미 존재 하 는 서버 앞에서 역방향 프 록 시 를 하고 NGINX 의 핵심 응용 프로그램 으로서 전 세계 수천 개의 사이트 에 사용 되 었 다.
다음은 NGINX 를 역방향 프 록 시 서버 로 사용 하 는 장점 입 니 다.
권한 처리 와 포트 분 배 를 간소화 하 였 습 니 다.
더 효율 적 인 정적 자원 처리
Node.js 붕괴 상황 을 더 잘 처리 합 니 다.
DoS 공격 의 영향 완화
주:이 글 은 Ubuntu 14.04 또는 CentOS 환경 에서 NGINX 를 역방향 프 록 시 서버 로 사용 하 는 방법 을 설명 하고 있 으 며,NGINX 를 사용 하여 Node.js 앞에서 역방향 프 록 시 서버 를 만 드 는 것 이 효과 적 입 니 다.
2.캐 시 정적 파일
데이터 가 증가 함 에 따라 노드 를 기반 으로 한 서버 가 압력 을 나타 내기 시작 했다.이때,당신 은 두 가지 일 을 하고 싶 을 수도 있 습 니 다.
Node.js 서버 를 더 많이 사용 합 니 다.
여러 서버 간 부하 균형
이 는 간단 하 다.NGINX 는 처음부터 역방향 프 록 시 서버 로 이 루어 져 캐 시 와 부하 균형 등 을 쉽게 만 들 었 다.
Modulus 사 이 트 는 NGINX 를 사용 하여 Node.js 역방향 프 록 시 서버 의 성능 향상 을 소개 하 는 유용 한 글 이 있다.Node.js 만 사용 할 때 작가 의 사 이 트 는 초당 900 개의 요청 을 처리 할 수 있다.NGINX 를 리 버스 프 록 시 서버 로 정적 파일 을 처리 한 후 이 사 이 트 는 1 초 에 1600 개가 넘 는 요청 을 처리 할 수 있어 두 배 에 가 까 운 성능 이 향상 되 었 다.
다음은 이 사이트 가 상기 성능 을 향상 시 키 는 설정 코드 입 니 다.

nginx

server {

listen 80;

server_name static-test-47242.onmodulus.net;

root /mnt/app;

index index.html index.htm;

location /static/ {

try_files $uri $uri/ =404;

}

location /api/ {

proxy_pass http://node-test-45750.onmodulus.net;

}

}

3.Node.js 부하 균형 실현
최종 목표 인 Node.js 는 여러 개의 응용 서버 를 실행 하고 이 서버 들 사이 에 균형 적 으로 부하 합 니 다.
Node.js 가 부하 균형 을 이 루 는 것 은 비교적 어 려 운 일이 다.Node.js 는 브 라 우 저 쪽 JavaScript 와 서버 쪽 Node.js 가 json 을 통 해 데이터 교 류 를 할 수 있 도록 허용 하기 때문에 같은 클 라 이언 트 가 특정한 응용 서버 에 반복 적 으로 접근 할 수 있 고 여러 응용 서버 간 에 session 을 공유 하 는 것 도 비교적 어렵다.
NGINX 무 상태 부하 균형 실현 방식:
Round Robin.목록 의 다음 서버 로 새로운 요청
Least Connections.가장 적은 서버 에 연결 해 달 라 는 새로운 요청
IP Hash.클 라 이언 트 IP 의 hash 값 에 따라 서버 를 지정 합 니 다.
IP Hash 라 는 신뢰 할 수 있 는 클 라 이언 트 를 같은 서버 에 프 록 시 를 요청 하 는 방식 만 이 Node.js 응용 서버 에 혜택 을 줄 수 있 습 니 다.
4.대리 웹 소켓 연결
모든 버 전의 HTTP 는 클 라 이언 트 가 자발적으로 서버 에 요청 하기 위해 설계 되 었 고 웹 소켓 은 서버 가 클 라 이언 트 에 게 자발적으로 메 시 지 를 전송 할 수 있 습 니 다.
WebSocket 프로 토 콜 은 클 라 이언 트 와 서버 측의 안정 적 인 상호작용 을 더욱 간단 하 게 하 는 동시에 더욱 작은 상호작용 지연 도 제공한다.클 라 이언 트 와 서버 가 필요 할 때 자발적으로 메 시 지 를 요청 할 수 있 는 듀 플 렉 스 통신 이 필요 하 다 면 웹 소켓 을 사용 하면 됩 니 다.
웹 소켓 프로 토 콜 은 자바 스 크 립 트 인터페이스 가 완비 되 어 있 기 때문에 원래 Node.js 를 응용 서버 로 사용 하기에 적합 합 니 다.연결 수가 증가 하면 NGINX 를 사용 하여 클 라 이언 트 와 Node.js 서버 에서 프 록 시 를 하여 정적 파일 과 부하 균형 을 캐 시 하 는 것 이 매우 의미 가 있 습 니 다.
5.SSL/TLS 와 HTTP/2 실현
점점 더 많은 사이트 들 이 SSL/TLS 를 사용 하여 정보 교환 의 안전성 을 확보 하고 있 습 니 다.사이트 에 가입 할 지 여 부 를 고려 할 수 있 습 니 다.그러나 만약 에 하기 로 결정 하면 NGINX 는 두 가지 방식 으로 이 를 지원 합 니 다.
NGINX 를 SSL/TLS 역방향 프 록 시 로 사용 할 수 있 습 니 다.Node.js 서버 는 복호화 요청 을 사용 한 후 암호 화 되 지 않 은 내용 을 NGINX 에 되 돌려 줄 수 있 습 니 다.
HTTP/2 를 사용 하면 SSL/TLS 가 가 져 온 성능 비용 을 상쇄 할 수 있 습 니 다.NGINX 는 HTTP/2 를 지원 하기 때문에 HTTP/2 와 SSL 프 록 시 요청 을 동시에 사용 할 수 있 습 니 다.Node.js 서버 는 변경 할 필요 가 없습니다.
구현 단계 에서 Node.js 프로필 의 URL 을 업데이트 해 야 합 니 다.NGINX 프로필 에서 SPDY 나 HTTP/2 를 사용 하여 연결 을 최적화 해 야 합 니 다.HTTP/2 지원 을 추가 하 는 것 은 HTTP/2 를 지원 하 는 브 라 우 저 는 새로운 프로 토 콜 을 사용 하여 응용 프로그램 과 상호작용 을 할 수 있 고 오래된 브 라 우 저 는 HTTP/1.x 를 계속 사용 할 수 있 음 을 의미 합 니 다.

좋은 웹페이지 즐겨찾기