3

週末に多くのトラフィックが発生する Web サイトがあります。訪問者がこのサイトで行うことは、クイズの質問に答えて、できるだけ早く提出することです。

私のサーバーは、javascript がサーバーから質問を取得しようとするとき、およびデータベースに送信しようとするときに大量のトラフィックを取得します。

アプリケーションは mysql と PHP を使用して作成されます。EBS ボリュームは 1 つの EC2 インスタンスにしかアタッチできないため、訪問者が送信するときに、複数のデータベースではなく単一のデータベースに送信できるようにしたいと考えています。

トラフィックが非常に多いため、トラフィックのスパイク時に実行中のインスタンスをサポートするには、より多くのインスタンスが必要です。訪問者が送信したすべての回答に対して単一のリポジトリを提供するような高可用性を実現するにはどうすればよいですか? ありがとうございました。

4

2 に答える 2

1

Amazon RDS を使用できます。基本的には、ハードディスクのないインスタンス外の DB です。複数のインスタンスを設定して RDS に接続できます。

トラフィックのスパイクの問題に対処するために、水平スケーリング用の ec2 インスタンスを追加することもできます。

于 2013-01-02T09:28:22.707 に答える
1

アプリケーションをスケーリングできるようにするためのさまざまなオプションがあります。

  1. 現在すべてが 1 つのインスタンスで実行されている場合は、それらを 2 つのインスタンスに分けることができます。1 つは Web サーバー用で、もう 1 つはデータベース用です。EC2 では、セキュリティ グループを使用して、Web サーバーからデータベースへのアクセスを許可できます。
  2. Web サーバーがボトルネックになった場合は、インスタンスを追加し、Amazon の ELB を使用してさまざまなインスタンス間で負荷を分散します。自動スケーリングを使用して、トラフィックに基づいて実行中のインスタンスの数を動的に増減することもできます。
  3. データベースがボトルネックである場合は、最初にそれをより大きなインスタンス タイプに移動することから始めることができます。マネージド mysql サービスに Amazon の RDS サービスを使用することもできます。
  4. 容量をさらに追加するには、読み取りレプリカ (アプリが読み取り集中型の場合) を使用して負荷を分散できます。

上記のポイント 4 までは、アプリケーションを変更せずにすべて実行できるはずです。さらにスケールアップするには、さらにいくつかの点を確認する必要があります。

  • キャッシングの追加: memcached または Amazon の Elasticache を使用します。これにより、大きなブーストが追加される可能性があります。
  • 必要に応じて読み書き容量を簡単に追加できる Amazon の DynamoDB のようなものに移行します。

幸運を!

于 2013-01-02T09:45:37.337 に答える