1

ASP.NET Web サイトが多数のユーザー (つまり 10,000 ユーザー) が同時にアクセスできるように設計されている場合、実装できる技術、知識、方法、設計、または実践にはどのようなものがありますか?

デザイン/プラクティスの名前を教えてください。Googleでさらに調査を続けることができるように、テクニックの名前を知る必要があるだけです.

ありがとう。

4

2 に答える 2

3

これは巨大なトピックです。コメントにあるように、特効薬はありません。

応答をアーキテクチャとプロセスの 2 つのセクションに分けます。

アーキテクチャの観点からは、多くのプラクティスがあります。まず、水平方向のスケーリングがあります。つまり、通常はロード バランサーによって管理されるサーバーを追加します。これは比較的安価なハードウェア ソリューションですが、ボトルネックがどこにあるかを知る必要があります。最も簡単な水平スケーラビリティの秘訣は、Web サーバーを追加することです。通常、データベース サーバーを水平方向にスケーリングするには、シャーディングなどの手法を使用して、かなりの複雑さが必要になります。水平方向のスケーリングにより、回復力とパフォーマンスが向上します。

垂直方向のスケーラビリティとは、基本的にハードウェアをアップグレードすることを意味します。RAM の増設、CPU の増設、SSD ディスクの増設などです。多くの場合、これは最も安価なソリューションです。また、ソリューションの要素を分離することも意味する場合があります。たとえば、Web サーバーをデータベース サーバーから分離することです。

次のアーキテクチャ ソリューションはキャッシングです。これは、それ自体が大きなトピックです。CDN を追加することは、最初のステップとして適切です。多くの CDN プロバイダーは、リバース キャッシング プロキシとして効果的に追加する「アプリケーション アクセラレータ」オプションも提供しています (@Aviatrix が推奨しているように)。独自のリバース キャッシュ プロキシを追加することは、多くの場合、独自の環境での奇妙な問題や、ASP.Net サーバーから提供される静的ファイルをオフロードするためのソリューションです。

もちろん、ASP.Net はフレームワーク内で多くのキャッシュ オプションを提供しています。それらをよく読んで理解しておいてください。彼らはお金に大きな打撃を与えます。また、YSlow などのツールを使用してソリューションを実行し、適切な HTTP キャッシュ ヘッダーを設定していることを確認してください。

役立つかもしれないし、役に立たないかもしれないもう 1 つのアーキテクチャ ソリューションは、外部サービスを非同期的に呼び出すことです。ソリューションが外部 Web サービスに依存している場合、そのサービスを同期的に呼び出すと、基本的にサイトが外部システムの容量と回復力に制限されます。トラフィックの多いソリューションの場合、これはお勧めできません。

非常に高いスケーラビリティを実現するために、多くの Web サイトは永続性に NoSQL を使用しています。これは別の大きなトピックであり、多くの複雑なトレードオフがあります。

プロセスの観点から、スケーラビリティが主な関心事である場合は、開発プロセスに組み込む必要があります。これは、プロジェクト全体で定期的にパフォーマンスとスケーラビリティの評価を実施し、測定フレームワークを構築して、追求する最適化を決定できるようにすることを意味します。

ソリューションの負荷テストを実行できる必要がありますが、本番レベルのトラフィックでの負荷テストは通常​​商業的に非現実的であるため、代替ソリューションを見つける必要があります。私は代表的なインフラストラクチャで JMeter を定期的に使用しています。また、負荷がかかった状態でボトルネックを見つけられるようにする必要があります。これには、コードのインストルメント化とプロファイラーの使用が必要になる場合があります (RedGate は素晴らしいものです)。

最も重要なことは、トレードオフを評価するプロセスを持つことです。ほとんどすべてのパフォーマンス/スケーラビリティの改善は、あなたが気にかけている他の何かを犠牲にしています。ロードバランサーには費用がかかります。リバース キャッシング プロキシ ソリューションは複雑さを増します。NoSQL では、開発チームに新しいスキルが必要です。「巧妙な」コーディング手法は、保守性を低下させることがよくあります。必要なベースラインを確立し、測定フレームワークを構築してそのベースラインに対してソリューションを評価し、プロファイリングしてボトルネックを特定することをお勧めします。スケーラビリティを改善するための各ソリューションは、現在のボトルネックに対処する必要があります。ソリューションが実際に期待される影響を与えることを確認するために、概念実証段階をお勧めします。

最後に、10000 人の同時ユーザーは、最新のハードウェア上のほとんどの Web アプリケーションにとって特に大きな数ではありません。

于 2013-10-01T09:21:23.410 に答える