3

パートナーと私は、クラウドでホストされる Web サイトを開始しようとしています。かなり大量の ajax トラフィックがあり、バックエンドが金銭トランザクションを処理するため、一部の DB テーブルで ACID が必要です。

現在、すべてが単一のサーバーで実行されています。一部の AJAX トラフィックはテキスト ファイルにキャッシュされます。

質問:

  1. データベース サーバーを拡張する最善の方法は何ですか? mysql を別のインスタンスに移動して、マスターとマスターの複製を行うことを考えました。しかし、これは難しいようで、InnoDB でも ACID プロパティを失う可能性があると聞きました。Amazon RDS は適切なソリューションですか?

  2. 一部のカスタム ログ ファイルと ajax キャッシュ ファイルを除いて、Web サーバーは比較的ステートレスです。複数の Web サーバーにスケーリングするための適切な方法は何ですか? カスタム ログ ファイルは信頼できる共有ファイル システムまたは DB に移動できると思いますが、複数のサーバー間での AJAX キャッシュ ファイルの一貫性についてどうすればよいかわかりません。(Web サーバーが停止した場合に /var/log/* が失われることは気にしません)

  3. パフォーマンスのためには、より多くのコアとメモリを備えたより大きなインスタンスを使用する方が安価かもしれませんが、最終的には冗長性が必要になるため、これを安価に行うための最良の方法は何だろうか.

ありがとう

4

2 に答える 2

1

この投稿を見てください。ネット上には、スケーラビリティについて議論するプレゼンテーションがたくさんあります。私が心に留めておくべきことをいくつか提案します:

  • データ シャーディングを早めに計画する [すぐに実行しない場合でも]
  • memcached などのメカニズムを使用して、データベースに送信されるクエリの数を制限してみてください
  • 長期的には、他のドメインからの静的コンテンツを提供する準備をします - ngin-x-alike サーバーとそれ以降の CDN から

冗長性 - 必要に応じて異なります。サイトで「読み取り専用」モードを使用できますか? その場合 - mysql レプリケーション + 静的ファイルの rsync を使用し、フェールオーバーの場合は、マスター ノードを回復するまでサイトをそのモードで動作させます。高可用性が必要な場合は、[少なくとも mysql の場合] drbd レプリケーションを確認するか、マスター ノードになるようにスレーブ サーバーを自動昇格させてセットアップします。

以下は興味深いかもしれません:

于 2011-12-12T16:09:34.120 に答える