3

エンティティ フレームワークを持つバックエンドに WebApi を備えた MVC 4 で構築された Web アプリがあります。

構造マップを使用して、エンティティ フレームワークを webapi に挿入しました。MVC 4 アプリに webapi クライアントを挿入します。

アプリケーションは正常に動作していますが、すぐにスケールが必要になります。

MVC 4 アプリは 1 つのサーバーにあり、webapi は別のサーバーにあり、データベース サーバーがあります。

webapi を水平方向にスケーリングするにはどうすればよいですか? webapi サーバーとデータベース サーバーを追加する場合、複数の接続文字列を取り、ラウンド ロビン クエリを実行するエンティティ フレームワークの構成はありますか? EF で使用できるシャーディングはありますか。

httpclient はどうですか?クライアントが複数のIPを取得し、1つが失敗した場合、リクエストは別のサーバーに送られるなどのフェイルオーバーはどうですか?

それらをどのようにスケーリングできますか?

4

1 に答える 1

3

通常、追加の Web サーバーを追加してから、ロード バランサーを使用して着信要求をサーバー間で分散します。ここでいくつかの考慮事項があります。

  • Web サーバーが (ASP.NET セッションを介して) 要求全体でデータを保持する場合、すべての Web サーバーが共有できる別の状態サーバーを作成するか、状態を認識するロード バランサーを使用する必要があります。

  • パフォーマンスの問題がデータベース IO の問題 (テーブル インデックスの欠落、インデックスの断片化、大量の結果セットをプルする要求、最適でないディスク/ハードウェア構成など) に起因する場合、Web サーバーを追加しても問題は解決しません。最初のステップは、データベースを監視およびプロファイリングし、パフォーマンスが良好であることを確認することです。

于 2012-08-12T19:53:23.877 に答える