web-dev-qa-db-ja.com

大規模サイトはどのようにスケールアップし、大量のトラフィックに最適化しますか?

FacebookやTwitterなどのサイトは、大量のトラフィックに対してサイトをどのように最適化していますか。最高のサーバーを取得するために多額の費用を費やす以外に、大量のトラフィックに対応するためにコードで最適化できるものは何ですか?

ページを静的なHTMLにキャッシュすることを読みましたが、ページが常に更新されるソーシャルネットワーキングサイトには実用的ではありません。

7
PeterBZ

グーグル、フェイスブック、ツイッターなどの大規模なサイトは、少数の高性能サーバーを実行せず、大量の小型で安価なサーバーを実行するという点で、必ずしも「最高の」サーバーを取得するわけではありません。彼らはハードウェアが死んで交換されることを期待し、コードはそれを可能にします。

大規模なサイトで典型的ないくつかのこと:

  • MySQLのようなSQLデータベースは使用しません。代わりに、HBaseやCassandraなどのキーと値のストア。リクエストの数が膨大な場合、mySQLおよび他のSQL DBは遅すぎます。
  • 可能な限りキャッシュします。あなたが言うようにHTMLキャッシュ。ユーザーのデータは、memcachedなどを使用してメモリに保存されます。
  • Redditなどの一部のサイトは、ユーザーがリクエストする前にページを事前キャッシュします。
  • 可能な限り事前計算して、サイトはあなたの友人の数(または何でも)を処理し、それもキャッシュする傾向があります-可能な限り少しは動的に行われます。

http://highscalability.com/ は、これについてさらに学ぶのに最適なサイトです。

10
Steve Claridge

sharding を介したデータベーストラフィックのオフロードは、おそらくトラフィックの多いサイトをスケーリングする最良の方法の1つです。

Gzipを使用してリソースファイルを圧縮し、複数のリソースファイルを1つに結合して、ブラウザーが行う必要のあるリクエストの量を減らすことにより、ページの読み込み時間を短縮することも価値のある最適化です。

3
Jacob Relkin

HipHop for PHP に言及したと思いますが、これはPHPをC++に変換し、 Facebookで開発されました です。 Facebookは APC でもいくつかの作業を行ったと思います。

3
Andy