2017-04-03 3 views
-1

したがって、私は構造がこのファイル構造に基づいているWebアプリケーションを持っています:https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application。 私のアプリもMlab上のmongoDBに接続しています。私のアプリが何NodeJsを使用して水平スケーラビリティを実装する方法

  • は、ユーザーが/サインアップログインすることができます。
  • はmlabからデータを取得します。
  • 検索されたデータはユーザーによって評価することができます。
  • 検索されたデータは管理者が削除できます。
  • ユーザーはdbにデータを追加できます(データはトレーニング計画です)。

今、私は私のアプリが水平にスケーラブルにする必要がありますが、私は少しここで失った午前:サイン•

私は私がsocket.ioようなものが必要shoudn't何リアルタイムの活動が想定していませんか? •いくつかの種類のMQ(rabbitMQ、ZMQなど)を追加する必要があります:もしそうなら、たぶん任意のポインタ。

•ロードバランサが必要であると確信しています。 Nginx、HaProxy ...私はおそらく、複数のポートを最初に聞くために私の高速サーバーの設定を変更する必要があります、そうですか?

またはこれについて完全に間違っていますか?

P.S.:これはあまりにも広い質問ではないと思っています。

+0

私はそれを言うのは嫌ですが、質問は信じられないほど広いです。 –

答えて

1

異なるニーズにはさまざまなアプローチが必要です。

これらは、必要に応じて異なる場合があります。すべてのスケーラブルアプリケーションにそれらを持たせる必要はありません。アプリケーションを非同期にするには、すべての要求をキューに入れて即座にクライアントに返すことができます。次に、操作が終了したことをクライアントに通知するプッシュメカニズムが必要です。 (Socket.io、RabbitMQのなど)もちろん

あなたが別のサーバーに要求を分散するために、リバースプロキシが必要になりますが(などHAProxy)バランスまたはワークロードの基礎をロード

あなたはときに注意を払う必要がある最初の事は、もう一つは、認証フェーズです。ログインしているクライアント(たとえば、セッション、キャッシュ、ファイルサーバー)は、これらのリソースが単一のサーバーを提供している間に、同時に5〜10台のサーバーからの何百万の要求にも応答し始めるでしょう。ここには、アプリケーションが使用するリソースについて考える必要があります。モニタリングのようなものですそして、そのようなことがたくさんあります。

これはあなたが本当に考えるべきものです:

+0

ありがとうございました。今のところ、ローカルホスト、つまりポート80と、81,82,83などのアップストリームサーバーを追加するために、nginxを追加しました。もっと高速なプログラムを追加するサーバーが増えれば増えるようです。 abテストでは20k要求と1k同時実行を実行した結果、3台のサーバを実行している間に〜35sだったのに対し、1台のサーバで同じテストを実行した結果〜120sでした。これは水平スケーラビリティが動作していると思われますか、これは別のものですか? – orux

関連する問題