찾다

 >  Q&A  >  본문

node.js - web项目升级怎么样避免用户请求无响应

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

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

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

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

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

PHP中文网PHP中文网2875일 전475

모든 응답(9)나는 대답할 것이다

  • PHP中文网

    PHP中文网2017-04-17 16:02:19

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

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

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:02:19

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:02:19

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 16:02:19

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

    회신하다
    0
  • 高洛峰

    高洛峰2017-04-17 16:02:19

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-17 16:02:19

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-17 16:02:19

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

    회신하다
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:02:19

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

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

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 16:02:19

    1. 핫 배포

    2. 그레이스케일 출시

    회신하다
    0
  • 취소회신하다