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

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

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

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

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

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

PHP中文网
PHP中文网

认证0级讲师

全員に返信(9)
Ty80

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

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

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

いいねを押す +0
大家讲道理

サーバーがグレースフル リスタートをサポートしている場合、これはさらに便利です。スムーズな再起動は自分で実装することも、フレームワークやライブラリによって提供されることもあります。

いいねを押す +0
Peter_Zhu

そう考えるのは間違いです。5 台のマシンに異なるプロジェクトをデプロイしない限り、アップグレードはシャットダウンするしかありません。そうでない場合は、他に何ができるでしょうか。つまり、同じプロジェクトを 5 台のマシンにデプロイするということです。次に、アップグレード時に、サービスに影響を与えないようにする方法を検討します。次に、ここで、リクエストを 5 台のマシンに分散する方法を考えます。マシン上で、実行中に応答できないことが心配な場合は、最低の時点で 5 台のマシンを 4 台のマシンに変更し、再度追加してください。アップグレード プロセスを実行し、キャッシュ時間を調整します。マシンが 5 台ある場合、キャッシュは存在しません。 。 。

いいねを押す +0
大家讲道理

アップグレードは通常、早朝に行われます。これは、何か問題が発生しても、それほど大きな影響が及ばないためです。

いいねを押す +0
小葫芦

サーバーのバランス調整とダウングレード、アップグレード、および再起動を担当します

いいねを押す +0
洪涛

影響をまったく受けないことは不可能です。唯一の方法は、影響をできるだけ目立たないようにすることです。JD.com のサーバーは、アップグレード時に頻繁にアップグレードされます。 、メニューを開くことができず、何も表示されません。はい、ずっと見て回っていましたが、コンテンツが出てきませんでした。したがって、基本的にアップグレード時には、サーバーはコンテンツを表示しないフレンドリーなインターフェイスに切り替えられ、アップグレード後に元に戻ります。

いいねを押す +0
巴扎黑

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

いいねを押す +0
Peter_Zhu

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

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

いいねを押す +0
刘奇
  1. ホットデプロイメント

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート