suchen

Heim  >  Fragen und Antworten  >  Hauptteil

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

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

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

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

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

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

PHP中文网PHP中文网2788 Tage vor470

Antworte allen(9)Ich werde antworten

  • PHP中文网

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

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

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

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

    Antwort
    0
  • 大家讲道理

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

    当你的服务器支持平滑重启,这就比较方便了。平滑重启可能是你自己实现的,也可能是框架或者库提供的。

    Antwort
    0
  • 天蓬老师

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

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

    Antwort
    0
  • 大家讲道理

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

    升级一般都是凌晨升级,因为如果出了什么问题,都不会影响那么大

    Antwort
    0
  • 高洛峰

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

    负责均衡下掉一台服务器,升级,然后再up

    Antwort
    0
  • PHP中文网

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

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

    Antwort
    0
  • 巴扎黑

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

    逐台升级,升级过程中把流量引导其他服务器

    Antwort
    0
  • 天蓬老师

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

    我们项目是用pm2发布和做进程管理的

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

    Antwort
    0
  • 怪我咯

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

    1. 热部署

    2. 灰度发布

    Antwort
    0
  • StornierenAntwort