node.js - web项目升级怎么样避免用户请求无响应
PHP中文网
PHP中文网 2017-04-17 16:00:19
0
9
463

比如有5台服务器跑了5个node项目,然后前面使用nginx做负载均衡

比如项目访问量很大,然后增加了一些新的功能,项目需要升级 5台服务器逐个升级,怎么能保证在升级的过程中不会影响访问

例如 现在要升级A服务器上的node项目,但是A服务器上有许多请求 如果直接升级的话,请求可能就会没有响应,如果项目涉及到对数据库操作,可能会产生脏数据

我能想到的一种方案是 事先发公告 没有流量的时候再升级

我想请问还没有其它方案,在不影响用户请求的情况下对服务进行升级呢

PHP中文网
PHP中文网

认证0级讲师

모든 응답(9)
Ty80

응답이 없을 뿐입니다(tcp 연결이 중단된 것 같습니다). 구성을 전환할 때 nginx를 정상적으로 다시 시작할 수 있습니다. 이렇게 하면 백엔드를 제거하고 다시 추가할 수 있습니다.

그러나 "액세스에 영향을 주지 않고" 이 문제를 해결해야 할 뿐만 아니라 이전 버전의 프런트 엔드와 새 버전의 서버를 공유 가능하게 만들어야 합니다.

더러운 데이터도 또 다른 문제입니다. 모든 요청이 정상적으로 종료될 것이라고 기대해서는 안 되며, 더티 데이터를 정리하는 메커니즘이 항상 있어야 합니다(현장 또는 이후).

大家讲道理

서버가 단계적 재시작을 지원하는 경우 더욱 편리합니다. 원활한 재시작은 직접 구현하거나 프레임워크 또는 라이브러리에서 제공할 수 있습니다.

Peter_Zhu

5개의 시스템에 서로 다른 프로젝트를 배포하지 않으면 업그레이드가 종료될 수밖에 없다고 생각하는 것은 잘못된 것입니다. 5개의 머신에 동일한 프로젝트를 배포한다는 의미입니다. 그런 다음 업그레이드할 때 서비스에 영향을 주지 않는 방법을 고려해야 합니다. 그러면 여기서 질문이 5개의 머신에 배포됩니다. 머신에서는 어떻게 했는지에 따라 조정하면 됩니다. 5 머신을 4 머신으로 변경한 다음 업그레이드가 성공한 후에 다시 추가하세요. 업그레이드 프로세스를 수행한 다음 캐시 시간을 조정하면 머신이 5개 있고 캐시가 없습니다. . .

大家讲道理

업그레이드는 대개 아침 일찍 이루어집니다. 문제가 발생하더라도 그다지 큰 영향을 미치지 않기 때문입니다.

小葫芦

서버 밸런싱 및 다운그레이드, 업그레이드, 다시 업을 담당합니다

洪涛

영향을 전혀 끼치지 않는 것은 불가능합니다. JD.com을 관찰해 보면 아침 일찍 서버가 업그레이드되는 것을 볼 수 있습니다. , 메뉴를 열 수 없고 아무것도 나타나지 않습니다. 네, 계속 보고 돌았지만 콘텐츠가 나오지 않았습니다. 그래서 기본적으로 업그레이드할 때 서버는 콘텐츠를 표시하지 않는 친숙한 인터페이스로 전환했다가 업그레이드 후에 다시 전환합니다.

巴扎黑

하나씩 업그레이드하고 업그레이드 과정에서 트래픽을 다른 서버로 보냅니다

Peter_Zhu

저희 프로젝트에서는 릴리스 및 프로세스 관리를 위해 pm2를 사용합니다

게시 시 사용자에게 영향을 미치지 않습니다.

刘奇
  1. 핫 배포

  2. 그레이스케일 출시

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿