私にはほとんど知識がありませんが、アイデアを呼び起こすためにこの質問を提起しました。各自が得意な分野で Facebook で使用できる特定のテクノロジーやアーキテクチャのソリューション、または最適化手法について独自の議論を行っていただければ幸いです。 。 2008 年 9 月 1 日のテンセントの Facebook 技術運営担当副社長ジョナサン・ハイリガーへのインタビューによると、次のことが分かりました:
(1) Facebook は世界で 4 番目にアクセス数の多い Web サイトであり、9,000 万人がアクセスしていると主張しています。 1 日あたりの訪問者数 Facebook の 10,000 サーバーにアクセスするアクティブ ユーザー。
(2) 25TBのデータ(2008年12月には28TB)、40万人の外部開発者によってサポートされ、25,000セットのアプリケーションソフトウェアが開発されました。
(3)はLAMP (Linux、Apache、MySQL、PHP)テクノロジーアーキテクチャを使用します。データベースはMySQLを使用します。キャッシュ SQL アクセラレーション (世界最大の分散 Memcached キャッシュ、800 台を超えるサーバー、Memcached にキャッシュされたデータだけでも 20 TB 以上に達します)。オペコードのコンパイルとキャッシュに APC を使用します。 PHP のコンパイルと実行は次の図に示すとおりです:
2. 可能なMySQLアーキテクチャと最適化
(1) データの縦方向(なし 関連データは異なるデータベースサーバーに配置されます)と水平分割(user_id ハッシュなどのライブラリテーブルハッシュ)、次に MySQL プロキシ/Spock プロキシを使用して分割テーブルをリバースプロキシします。
(2) 変数を合理的に使用し、ローカル ファイル内でハッシュ マッピング関係を確立して、さらにセグメント化します。
(3) 読み取りと書き込みの分離を実現するマスター/スレーブ クラスター アーキテクチャ。
(4) 合理的なデータベース構造設計とインデックスの最適化
(5) その他: インデックスキャッシュ、ジョイントインデックス、クエリキャッシュなど。
3. 可能なシステム最適化
(1) epoll モデルを使用します
(2) 非同期 I/O
(3) fastc gi またはその他の方法マルチプロセスの実装
(4) sendfile システムコールによりネットワーク I/O トラフィックが増加
4. 使用される可能性のある Web アーキテクチャまたはフロントエンド技術
(1) 独立した画像サーバーなどの Web コンポーネントの分離、JavaScript、CSS ファイル、および動的スクリプトの分離。
(2) Nginx リバースプロキシ (または Squid)
(3) ) マルチコピーの負荷分散
(4) HTTP 永続接続と、背景画像オフセット技術、CSS、JavaScript、ビデオなどのブラウザー キャッシュの合理的な使用
5. 使用される場合と使用されない場合があるいくつかのストレス テスト
(1) ストレステスト用の Apache の ab
(2) マルチプロセススイッチングのストレステスト用の Apache のプリフォークモード
(3) Nginx を使用してマルチプロセスで CPU と IO を監視します
Linux での Memcached 開発については、Ni Xuehan の記事を参照してくださいhttp://bbs.phpchina .com/viewthread.php? tid=48667&highlight=linux%2B%CF%C2%B5%C4%2Bmemcached%2B%BF%AA%B7%A2
Memcached の分散キャッシュメカニズムと関連ソリューションについては、次の URL を参照してください。関連記事:
http://tech.idv2.com/2008/07/24/memcached-004/