私は大量のトランザクション Web サイトを扱った経験がほとんどなく、最近この興味深い質問に出くわしました。高負荷 (毎秒数千リクエスト) で Java Web アプリケーションのボトルネックが発生する場所を知りたいと思っています。誰かが次の質問について考えるための高レベルのアプローチを私に与えることができれば、それは素晴らしいことです!
私が思いついた唯一のことは、memcached を使用してデータベース ルックアップをキャッシュすることですが、各リクエストにかかる時間を計算する方法と、システムが 1 秒あたりに処理できるリクエスト数を計算する方法がわかりません。扱う。
質問: インターネット規模のアプリケーションは、大量のトランザクションを処理できるように設計する必要があります。1 秒あたり平均 30,000 の HTTP 要求を処理する必要があるシステムの設計について説明してください。要求ごとに、システムは URL クエリ文字列を介して渡されたキーワードを使用して、5,000 万語の辞書を検索する必要があります。各応答は、単語の定義を含む文字列 (100 バイト以下) で構成されます。
システムの主要なコンポーネントについて説明し、どのコンポーネントをカスタム ビルドする必要があるか、およびどのコンポーネントがサードパーティのアプリケーションを利用できるかを書き留めます。各コンポーネントのハードウェア見積もりを含めます。設計には、最小のハードウェア/ソフトウェア ライセンス コストで最大のパフォーマンスを含める必要があることに注意してください。
見積もりの根拠を文書化します。
定義がそれぞれ 10 キロバイトの場合、設計がどのように変化するかを説明してください。