検索

ホームページ  >  に質問  >  本文

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

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

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

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

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

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

PHP中文网PHP中文网2788日前471

全員に返信(9)返信します

  • PHP中文网

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

    単に応答しないだけです (TCP 接続が中断されていると思われます)。この方法では、バックエンドを削除して、バックエンドをアップグレードして、再度追加することができます。

    しかし、「アクセスに影響を与えずに」これを解決する必要があるだけでなく、古いバージョンのフロントエンドと新しいバージョンのサーバーを共有可能にする必要もあります。

    ダーティデータも問題です。すべてのリクエストが正常に終了することを期待すべきではなく、ダーティ データを (オンサイトまたはその後で) クリーンアップするメカニズムが常に存在する必要があります。

    返事
    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

    1 つずつアップグレードし、アップグレード プロセス中にトラフィックを他のサーバーに転送します

    返事
    0
  • 天蓬老师

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

    私たちのプロジェクトはリリースとプロセス管理に pm2 を使用します

    公開時にユーザーは影響を受けません

    返事
    0
  • 怪我咯

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

    1. ホットデプロイメント

    2. グレースケールリリース

    返事
    0
  • キャンセル返事