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

 mobiledu2502860153 发布于 2022-10-30 21:27

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

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

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

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

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

9 个回答
    1. 热部署

    2. 灰度发布

    2022-10-31 22:07 回答
  • 我们项目是用pm2发布和做进程管理的

    发布的时候不会影响用户是用

    2022-10-31 22:08 回答
  • 逐台升级,升级过程中把流量引导其他服务器

    2022-10-31 22:08 回答
  • 完全不影响是不可能,只有尽可能的让影响看不出来,你观察一下京东就会发现,它家的服务器经常凌晨升级,升级的时候你打开它的菜单是刷不出东西来的,就看不停的转圈,但是就是不出内容。所以基本都是升级的时候把服务器切换到友好的不出内容界面,升级完再换回来。

    2022-10-31 22:08 回答
  • 负责均衡下掉一台服务器,升级,然后再up

    2022-10-31 22:08 回答
  • 升级一般都是凌晨升级,因为如果出了什么问题,都不会影响那么大

    2022-10-31 22:09 回答
  • 你这么想本来就是错的,除非你5台机器上部署的是不同的项目,那么升级只能停机,不然还能怎么办你说。你这个意思是5台机器上部署同一个项目,那么升级的时候你考虑怎么能不影响服务,你的出发点应该在这儿,那这里就有一个问题,对于一个请求你是怎么做分发到5台机器上的,你怎么做的然后就在哪里调整就是了,在低谷的时候把5台改成4台,然后升级成功之后再加回去,如果担心升级过程中响应不过来,那么就调整缓存时间,都5台机器了,不会没缓存把。。。

    2022-10-31 22:09 回答
  • 当你的服务器支持平滑重启,这就比较方便了。平滑重启可能是你自己实现的,也可能是框架或者库提供的。

    2022-10-31 22:09 回答
  • 只是无响应 (我猜是tcp连接中断) 比较简单,nginx切换配置时可以graceful restart的,这样可以撤掉一台后端--升级后端--加回去。

    但是"不影响访问" 不止要解决这个,你还需要让旧版本的前端和新版本的服务器可以共用。

    脏数据是另一个问题了。不应该期待每个请求都正常结束,清理脏数据 (现场或事后) 的机制总归是应该有的。

    2022-10-31 22:09 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有