2016-11-27 3 views
1

socket.io와 node.js를 사용하여 채팅 응용 프로그램을 개발하는 방법에 대한 튜토리얼이 많으며 의심 할 여지없이 노드의 장점으로 인해 채팅 응용 프로그램을 사용하는 장점이 있습니다. 하지만 최근에 이런 생각이 떠 올랐습니다. 앱을 배포 할 때 채팅 앱을 어떻게 유지할 수 있습니까? 수천 명의 사용자가 적극적으로 채팅하고 있다고 상상해보십시오.node.js 애플 리케이션 배포 가동 중지없이 pm2를 사용

이 기사 https://futurestud.io/tutorials/pm2-cluster-mode-and-zero-downtime-restarts에는 클러스터 기술이 필요하다는 것이 명확히 명시되어 있습니다. 음,이 문제를 해결할 방법이 있습니까?

답변

0

PM2이 도구는 적합하지 않습니다. 그것은 위대하지만, 그러한 종류의 오케스트레이션에는 너무 제한적입니다.

로드 밸런서 뒤에 서버를 구성하고 응용 프로그램의 병렬 인스턴스를 차례대로 실행하여 들어오는 요청을 처리하는 것이 가장 좋습니다. 이것은 Docker과 같은 컨테이너의 가장 일반적인 사용 사례 중 하나입니다.

중개자의 MarathonMarathon LB은 훌륭한 예입니다 (현재 socket.io 기반 채팅의 데이트 앱에서 제작 중입니다). Elastic Load Balancer (ELB) 뒤에 AWS를 실행합니다.

Heroku과 같이 실제로 얻을 수 있지만 Load Balancer 기능으로 인해 제한 될 수 있으므로 조금 더 어려울 수 있습니다. socket.io에서 Redis 세션 드라이버를 사용하여 분산 세션을 처리 할 수 ​​있습니다.

+0

다시 시작하는 데 약 몇 초가 걸립니다. 나는 채팅 앱을 테스트했다. 그것은 평소와 같이 일했습니다. 나는 그것이 두번째 분할을위한 중단 시간을 가질 것이라고 생각하지만, 이전에 설립 된 소켓은 붕괴되지 않았다. –

+0

세션에 redi가있는 socket.io? socket.io를 사용하여 세션이 필요합니까? –

+1

정확하지만 PM2 자체를 업데이트해야하는 경우 가동 중단 시간이 그보다 클 수 있습니다. NodeJS 자체를 업데이트해야하는 경우에도 마찬가지입니다. 어떠한 이유로 든 시스템을 재부팅해야하는 경우 클러스터 된 모든 인스턴스가 느슨해집니다. 그것이 PM2가 이것에 가장 적합한 도구는 아니며 downvote를 가지고 있다고 말하는 이유입니다. 그것은 훌륭한 출발이지만, "수천 명의 사용자"가 그것에 의지하고 있다고 말한 것처럼. 너무 많은 사용자가있는 프로젝트에 PM2를 사용하지는 않을 것입니다. 이벤트가 노드 인스턴스의 클러스터를 실행 중이면 완벽한 다운 타임에서 단일 장애 지점입니다. –