2016-11-27 8 views
1

チャットアプリケーションの開発にはsocket.ioとnode.jsを使用する方法がありますが、ノードの利点としてはチャットアプリケーションの利点があります。しかし、最近この考えが私の心に浮かんだ。私はアプリを配備するときにチャットアプリをどのように維持できるのだろうか?何千人ものユーザーが積極的にチャットしていると想像してください。node.jsアプリケーションのデプロイ時にpm2を使用してダウンタイム

この記事のhttps://futurestud.io/tutorials/pm2-cluster-mode-and-zero-downtime-restartsは、このクラスタのテクニカルには特別な注意が必要ですが、この問題に取り組む方法はありますか?

答えて

0

PM2はこのための適切なツールではありません。それは素晴らしいですが、そのようなオーケストレーションにはあまりにも限られています。

最高の解決策は、ロードバランサの背後にサーバーを構成し、着信要求を処理するためにアプリケーションの並列インスタンスを順番に実行することです。これは、Dockerのようなコンテナの最も一般的な使用例の1つです。

私が現在使っているのは、mesosphereのMarathonMarathon LBです。 Elastic Load Balancer(ELB)の背後にあるAWSで実行しています。

実際にHerokuでこれを得ることができますが、Load Balancerの機能によって制限されるため、少し難しいかもしれません。 socket.ioでは、Redisセッションドライバを使用して分散セッションを処理できます。

+0

再起動に約数秒かかる。私はチャットアプリをテストしました。それはいつものように働いた。私はスプリット秒のためのダウンタイムを持っていると思うが、以前の確立ソケットは崩壊していない。 –

+0

セッションのためのredisとsocket.io? socket.ioを使用してセッションが必要ですか? –

+1

正しいですが、PM2自体を更新する必要がある場合は、ダウンタイムがそれよりも長くなります。 NodeJS itselを更新する必要がある場合は、それも同じです。なんらかの理由でマシンをリブートする必要がある場合は、クラスタ化されたすべてのインスタンスが失われます。だから私はPM2がこれのための最善のツールではないと(そしてダウンボートを得た)と言いました。これは素晴らしいスタートですが、「何千ものユーザー」がそれに頼っていると言いました。私は、これまで多くのユーザーがいるプロジェクトでPM2を使用することは決してありませんでした。イベントがノードインスタンスのクラスタを実行している場合でも、完全な停止時間から離れた単一の障害ポイントです。 –

関連する問題