ホームページ > バックエンド開発 > PHPチュートリアル > 世界最大の PHP サイト Facebook バックエンド技術の探求

世界最大の PHP サイト Facebook バックエンド技術の探求

WBOY
リリース: 2016-06-13 13:25:53
オリジナル
924 人が閲覧しました

世界最大の PHP サイト Facebook のバックエンド テクノロジーを探る

今年の Facebook F8 開発者カンファレンスでは、51CTO が最新のオープン グラフ戦略とセマンティック検索について説明しました。今日は、Facebook の背後にあるソフトウェアについて学び、今日世界で最もアクセス数の多い Web サイトの 1 つである Facebook が、5 億人のユーザーのシステムが常に安定して確実に動作することをどのように保証しているかを見ていきます。

Facebook のスケーラビリティの課題

詳細に入る前に、Facebook が規模を拡大するために行ったソフトウェアの一部を紹介します:

◆Facebook の月間ページビューは 570000000000 (Google Ad Planner による)

◆ Facebook には、他のすべての写真サイトを合わせたよりも多くの写真があります (Flickr などのサイトを含む)

◆毎月 30 億枚以上の写真がアップロードされます

◆Facebook のシステム サービスは 1 秒あたり 120 万枚の写真を処理しますが、これには CDN サービスで処理される写真は含まれません

◆毎月 25 億件以上のコンテンツ (ステータス更新、コメントなど) が共有されます

◆ Facebook には 30,000 台以上のサーバーがあります (この数は昨年のものです)

Facebook 拡張機能が依存するソフトウェア

Facebook は依然としてある程度 LAMP サイトですが、他の要素や多くのサービスを組み込み、現在の慣行を変更するため、通常の LAMP よりもはるかに大規模です。

例:

◆Facebook は依然として PHP を使用しています ですが、Web サーバーによってネイティブ コードに開くことができるように、コンパイラが構築されているため、パフォーマンスが向上します。

◆Facebook は Linux を使用しています ですが、ネットワーク スループットに関して特に最適化されています。

◆Facebook は MySQL を使用しています ですが、主にキーと値、Jions、および Web サーバー上で動作するサーバー ロジック操作の永続ストレージとして使用されます。そこの方が実行しやすいからです。

Facebook の写真を保存するために使用される拡張性の高いオブジェクト ストアである Haystack のような、自己作成システムもあります。 Facebook の大規模な環境で実行できるログ システムである Scribe もあります。

それでは、世界最大のソーシャル ネットワーク ウェブサイトで使用されているソフトウェアを紹介しましょう。

Memcached

Memcached は、現在インターネット上で最も有名なソフトウェアの 1 つです。 これは、Web サーバーと MySQL として使用される分散メモリ キャッシュ システムです。 サーバー間のキャッシュ層 (データベース のため) アクセスが遅くなります)。 Facebook は長年にわたり、Memcached とその周辺ソフトウェアを最適化するいくつかの方法を提案してきました。ネットワークスタックの圧縮など。

Facebook は常に数十テラバイトのデータを数千の Memcached サーバーにキャッシュしています。 これはおそらく世界最大の Memcached クラスターです。

PHP 用ヒップホップ

スクリプト言語としての PHP は、ローカル プログラムに比べて動作が遅くなります。 HipHop では、PHP を C++ コードに変換し、それをコンパイルしてパフォーマンスを向上させることができます。 Facebook は PHP に大きく依存しているため、Web サーバーをより効率的に実行できます。

Facebook の小規模なエンジニア チーム (当初は 3 名のみ) が 18 か月をかけて HipHop を開発し、現在公開されています。

干し草の山

Haystack は、Facebook の高性能写真保存/検索システムです (厳密に言えば、オブジェクト ストアなので、必ずしも写真を保存するとは限りません)。 やるべきことはたくさんあります。アップロードされた写真は 20 億枚を超え、それぞれが 4 つの異なる解像度で保存されているため、写真の数は 800 億枚を超えています。

数億枚の写真を処理できるだけでなく、パフォーマンスも重要です。 前述したように、Facebook は 1 秒あたり約 120 万枚の写真を提供します 、この数値には CDN 上の数値は含まれません。 これは驚異的な数字です。 Facebook の画像ストレージの詳細については、51CTO の以前のレポート「Facebook 画像ストレージ アーキテクチャ テクノロジの完全分析」を参照してください。

BigPipe

BigPipe は、Facebook によって開発された動的 Web サービス システムです。 Facebook はこれを使用して各 Web ページをセクション (「ページレット」と呼ばれる) ごとに処理し、最適なパフォーマンスを実現します。

たとえば、チャット ウィンドウは別個、ニュース フィードは別個などです。 これらのページレットは、ページのレンダリング時に同時に使用でき、ページのレンダリング時に取得されます。プロジェクトの一部がクローズドまたはミッドレンジであっても、ユーザーは Web ページの一部を入手できます。

カサンドラ

Cassandra は、単一障害点のない分散ストレージ システムです。 これは NoSQL 運動の重要な部分であり、オープン ソース コードがあります (Apache プロジェクトにもなりました)。 Facebookは検索機能でこれを使用しています。

Facebook以外にもDiggなどを利用している人もいます。 しかし、Twitterは最近Cassandraを放棄しました。 Cassandra の詳細については、51CTO の特別トピック「Running to Freedom?」を参照してください。 Cassandra データベース アプリケーション ガイド」。

書記

Scribe は、Facebook が社内で広く使用している柔軟なログ システムです。 Facebook での大規模なロギングを処理でき、Facebook には数百ものロギング カテゴリがあり、自動的に新しいロギング カテゴリを処理できます。

Hadoop と Hive

Hadoop は、ビッグ データに対する操作を実行できるオープン ソースの Map-Reduce 実装です。Facebook はこれをデータ分析に使用しています (Facebook が大量のデータを持っていることは誰もが知っています)。 Hive は Facebook 発祥で、Hadoop 上で SQL クエリを使用できるようになり、プログラマー以外でも使いやすくなりました。

Hadoop と Hive はオープンソース (Apache プロジェクト) であり、Yahoo や Twitter などの多くのフォロワーを抱えています。

倹約

Facebook はいくつかの異なる言語と異なるサービスを使用しています。 PHP は最終的にフロントエンドに使用され、Erlang はチャットに使用され、Java および C++ はさまざまな場所で使用されており、場合によっては他の言語でも使用されます。 Thrift は社内で開発された言語間フレームワークであり、言語を接続して連携して相互に対話できるようにします。 これにより、Facebook は言語を超えた開発を継続しやすくなります。 。

Facebook は Thrift をオープンソース化しました。 Thrift にさらに多くの言語サポートが追加されました。

ワニス

Varnish は、ロード バランサとして機能し、超高速で提供できるコンテンツをキャッシュする HTTP アクセラレータです。

Arnish は Facebook で写真やプロフィール写真を処理するために使用され、毎日何十億ものリクエストを処理します。 他のものと同様、Varnish はオープンソースです。

Facebook をスムーズに運営し続けるためのその他の事項

私たちが言及したソフトウェアは Facebook のシステムを構成し、それを大規模に実行するのに役立ちます。 ただし、このような大規模なシステムを処理するのは複雑な作業であるため、Facebook をスムーズに実行し続けるために他にいくつかのことを列挙します。

プログレッシブリリースとダークローンチ

Facebook には、異なるユーザーに対して 2 つの異なるシステムを実行できるゲートキーパー システムと呼ばれるものがあります。 これにより、Facebook は新機能を段階的にリリースしたり、A/B テストを行ったり、Facebook 従業員のみに特定の機能をリリースしたりすることができます。

また、Gatekeeper は、Facebook が「ダーク スタート」を実装できるようにすることもできます。これは、ユーザーが使用する前に特定の機能をアクティブ化します (ユーザーが気づかないため、これはダーク スタートと呼ばれます)。 これは、正式リリース前にいくつかの機能不全やその他の問題を明らかにするのに役立つ実際のストレステストとして機能します。 。 ダークローンチは通常、正式ローンチの 2 週間前です。

プロファイリングのライブストリーミングシステム

Facebook は自社のシステムを注意深く監視しており、興味深いことに、実稼働環境でのすべての PHP 関数のパフォーマンスを監視する責任も負っています。 各 PHP 環境の構成と動作を検出します。オープンソース ツール XHProf を使用します。

シャットダウン機能を段階的に活用してパフォーマンスを向上させます

Facebook の実行中にパフォーマンスの問題が発生した場合、解決策の 1 つは、重要性の低い機能を段階的に無効にして、Facebook の多くのコア機能のパフォーマンスを向上させることです。

言及しなかったこと

ハードウェア関連については触れませんでしたが、これもスケーラビリティを向上させる重要な部分です。たとえば、他の大規模サイトと同様に、Facebook は CDN を利用して静的コンテンツを処理します。 Facebook には、より多くのサービスの拡張に役立つ大規模なデータセンターもあります。

Facebook のオープンソース プロット

Facebook は、Linux、Memcached、MySQL、Hadoop などのオープン ソース ソフトウェアを使用 (および支援) しているだけでなく、社内で開発されたソフトウェアの多くにも貢献しています。

Facebook はまた、FriendFeed チームが開発した高性能 Web サーバー フレームワークである Tornado をオープンソース化しました。オープンソース ソフトウェアのリストは、Facebook のオープンソース ページでご覧いただけます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート