世界最大の PHP サイト Facebook のバックエンド技術を探る
正直、この記事を見たとき、思わず再投稿してしまいました。原文はこちらから: http://www.aiitee.com/thread-4289-1-1.html
今年の Facebook F8 開発者カンファレンスでは、51CTO が最新のオープン グラフ戦略とセマンティック検索について学びました。今日は、Facebook の背後にあるソフトウェアについて学び、今日世界で最もアクセス数の多い Web サイトの 1 つである Facebook が、5 億人のユーザーのシステムが常に安定して確実に動作することをどのように保証しているかを見ていきます。
Facebook のスケーラビリティの課題
詳細に入る前に、Facebook がスケールするために行ったソフトウェアの一部を紹介します:
◆ Facebook の月間ページビューは 57000000000 (Google Ad Planner による)
◆ Facebook には、他のすべての写真サイトを合わせたよりも多くの写真があります (Flickr などのサイトを含む)
◆毎月 30 億枚以上の写真がアップロードされます
◆ Facebook のシステム サービスは 1 秒あたり 120 万枚の写真を処理しますが、これには CDN サービスで処理される写真は含まれません
◆毎月 25 億件を超えるコンテンツ (ステータス更新、コメントなど) が共有されます
◆ Facebook には 30,000 台以上のサーバーがあります (この数は昨年のものです)
Facebook 拡張機能が依存するソフトウェア
Facebook は依然としてある程度 LAMP サイトですが、他の要素や多くのサービスを組み込み、現在の慣行を変更するため、通常の LAMP よりもはるかに大規模です。
例:
◆ Facebook は今でも PHP を使用していますが、Web サーバーによってネイティブ コードにオープンできるように、PHP 用のコンパイラーを構築し、パフォーマンスを向上させています。
◆ 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 は、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 は新しい機能を段階的にリリースできるようになります。
/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 の Web サイトでご覧いただけます。
オープンソースのページが見つかりました。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPにより、インタラクティブなWebコンテンツを簡単に作成できます。 1)HTMLを埋め込んでコンテンツを動的に生成し、ユーザー入力またはデータベースデータに基づいてリアルタイムで表示します。 2)プロセスフォームの提出と動的出力を生成して、XSSを防ぐためにHTMLSPECIALCHARSを使用していることを確認します。 3)MySQLを使用してユーザー登録システムを作成し、Password_HashおよびPreprocessingステートメントを使用してセキュリティを強化します。これらの手法を習得すると、Web開発の効率が向上します。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)
