web-dev-qa-db-ja.com

大規模なWebサイトは、何百万ものユーザーにどのように提供されますか? (例:Google)

この質問は曖昧/広すぎるかもしれませんが、基本原則/要約を探しています。

たとえば、GoogleやFacebookのようなサイトは、受け取った数十億のページビューをどのように処理しますか?

私はラウンドロビンDNSを知っています。これは、あるIPを訪問者Aに提供し、次に別のIPを訪問者Bにラウンドロビン方式で提供することを理解しています。

これらのサイトは、eachサーバーに「google」ウェブサイトのコピーがあり、すべて同期されている複数の(100?)サーバーを運用していますか?

要約すると、数百万のページビューを持つ非常に大規模なサイトは実際にどのようにトラフィックを処理するのでしょうか。それらはどのように維持されていますか?そして、これを設定するための経験を得るためにどこに行くでしょうか?

詳細を知りたいのですが、実際にそのような設定を行うためのneedがないと、ケーススタディや資料を入手して詳細を知ることが難しいと感じています。

これがある程度意味があることを願っています。ありがとう。

6
Ross

概要:航空会社のフライトプランニングなどの大企業の顧客はOracle、Sun、IBM Bladecentersとカスタムコードを使用し、eBay、Twitter、Facebook、Googleなどの大企業はすべてを使用します-カスタム、仕事ができるものは何でも、それも秘密にしておきます彼らが会社を可能にするために解決しなければならなかった非常に難しいことの1つ。

-

小さなWebサーバーが非常に一般的になり、通常、Apache、Tomcat、IISなどのWebサーバーが表示され、その背後にデータベース(PostgreSQL、SQL Server、MySQL)があり、プログラミングレイヤーもあります(PHP、 Python、Ruby、Javaなど)。

大規模でありながら小規模なセットアップの場合は、これらのレイヤーを異なるサーバーに分割します.2つはApacheを実行し、両方とも同じ共有ファイルを参照し、2つはそれぞれに半分のデータを含むデータベースを実行し、もう1つはキャッシュを実行するか、または単にそれらを強力にします余裕があるように。これはあなたに長い道のりをもたらすことができます-たくさんの魚が2007年にHitWiseのトップ100のウェブサイトに入り、1時間あたり200万回以上の視聴を提供しました 1台のサーバーで そしてアカマイに画像ホスティングをアウトソーシングしました。

あなたが金持ちの場合、例えば政府、航空業界など、ブレードセンター、数十プロセッサのSunサーバー、ストレージデバイス内の数十のディスク、Oracleデータベースなどの大規模で専門的なサーバーにアクセスすることで、ここからスケールアップできます。

他の誰にとっても、安価でどのようにスケールアップするかという問題はまだ答えられていません。彼らがそれをどのように行うかは彼らの会社の中心的な問題の1つであり、彼らはカスタム構築に多くの努力を費やすでしょう。

多くのデータベースサーバーを関与させる興味深い方法で構成される可能性があります。グーグルではなく、 彼らは独自のファイルシステムを書いた そして データベースの置き換え 。シャーディング(コンテンツを1つのサーバーでA-Mに分割し、別のサーバーでN-Zに分割する)またはレプリケーション(すべてのサーバーが同じデータを持ち、読み取りはそれらのいずれかから行われ、書き込みはすべてのサーバーに送られる)またはカスタムのものが表示される場合があります。

おそらく、多くのキャッシュサーバーで構成されます。 Memcachedを実行しています。これらには多くのRAMがあり、最近実行されたデータベースクエリ、最近要求されたファイルをすばやく返します。2008年、Facebookは「800を超える(memcached)サーバーを使用してユーザーに28テラバイトを超えるメモリを提供します。」 リンク

アカマイなどのCDNサービス(コンテンツ配信ネットワーク)を見つけると思います。ここでは、すべての写真を提供して世界中に広め、それらにリンクして、ネットワークからユーザーに最も近いものを自動的に提供します。

また、多くのカスタムコードや、一生懸命働いているがそれを秘密にしている人々もいます。 eBayオークションにサービスを提供することは、大量のトラフィックを処理することを意味しますが、単一のオークションアイテムのデータはほとんど静的ですが、eBayオークションを検索することは、多くのデータ処理を意味します。 Googleがウェブを検索するということは、多くのデータ処理を意味しますが、方法は異なります。つまり、異なるサーバーに異なるデータが保存されます。 Facebookは、多くの情報が多くのユーザーに交差して移動することを意味します。Twitterも同様ですが、特性が異なります。 GoogleとFacebookは、独自のサーバーハードウェアを設計しています。

3

それらには多くの異なる場所があり、すべてのユーザーは最も近い場所に誘導されます。これは エニーキャスト で行われます。

それぞれの場所に多くのフロントエンドサーバー(Webサーバー)があり、バックエンドにはいくつかの異なるデータベースクラスターがあります。多くの場合、彼らは データベースシャーディング そこでやっています。

多くの場合、フロントエンドサーバーとバックエンドデータベースサーバーの間にレイヤーがあります。このレイヤーでは、すべての計算とデータ処理が行われています。 Googleはそこで使用しています MapReduce

これは非常に短い紹介ですが、リンクはより詳細な情報を見つけるのに役立つはずです。

3

たとえば、GoogleやFacebookのようなサイトは、受け取った数十億のページビューをどのように処理しますか?

多くのデータセンターにある多くのサーバー。

私はラウンドロビンDNSを知っています。これは、あるIPを訪問者Aに提供し、次に別のIPを訪問者Bにラウンドロビン方式で提供することを理解しています。

ああ。いいえ。リクエストごとに異なるIP(ラウンドロビン)を返しますが、このノクトは必ずしもすべての訪問者を意味します。

これらのサイトは、各サーバーに「google」ウェブサイトのコピーがあり、すべて同期されている複数の(100?)サーバーを運用していますか?

いいえ。これを「数十千」のサーバーにしてください。答えは「はい」です。 Googleは、それぞれに100.000台以上のサーバーを備えた多数のデータセンターを運営しています。

また、ASルーティングを使用して、トラフィックを最も近いデータセンターにリダイレクトします。

2
TomTom