世界最大の PHP サイトである Facebook のバックエンド テクノロジーについて学んだ後、今日は百万レベルの PHP サイトである Poppen.de の Web サイト アーキテクチャについて学びます。 Poppen.de はドイツのソーシャル ネットワーキング サイトです。Facebook や Flickr と比べると小規模な Web サイトですが、優れたアーキテクチャを備えており、Nigix、MySql、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite などの多くのテクノロジーが統合されています。 、Red5とツン。
統計
◆登録ユーザー数200万人;
◆同時接続ユーザー数 20,000 人;
◆1日あたり20万件のプライベートメッセージ;
◆1日あたり25万ログイン;
◆プロジェクトチームは開発者11名、デザイナー2名、システム管理者2名で構成されています
ビジネスモデル
当ウェブサイトはフリーミアムモデルを採用しており、ユーザーは以下のサービスを無料でご利用いただけます。
◆他のユーザーを検索;◆友達にメッセージを送る;
◆写真や動画をアップロードします;
◆友達を探す;
◆ビデオチャット;
◆続きは…
しかし、ユーザーが無制限にメッセージを送信したり、写真をアップロードしたりしたい場合は、ニーズに応じてさまざまな種類の会員サービスに料金を支払わなければなりません。同じ戦略がウェブサイト上のビデオチャットやその他のサービスにも使用されます。
ツールボックス
Nginx
Poppen.de のすべてのサービスは Nginx サービスに基づいています。フロントエンドには 2 台の Nginx サーバーがあり、ピーク時に 1 分あたり 150,000 リクエストの負荷を処理します。各マシンは 4 年前のもので、CPU が 1 つと RAM が 3 GB しかありません。 Poppen.de には 3 つの独立した画像サーバーがあり、3 つの Nginx サーバーが *.bilder.poppen.de に毎分 80,000 リクエスト サービスを提供します。Nginx アーキテクチャの優れた設計は、多くのリクエストが Memcached によって処理されるため、リクエストは PHP マシンに直接アクセスせずにキャッシュからコンテンツを取得することです。たとえば、ユーザー プロファイルが Web サイトで集中的に処理する必要があるコンテンツである場合、すべてのユーザー プロファイルが Memcached にキャッシュされている場合、リクエストは Memcached からコンテンツを直接取得します。 Poppen.de の Memcached は 1 分あたり 8,000 リクエストを処理できます。
アーキテクチャにはローカル画像キャッシュを提供する 3 つの Nginx 画像サーバーがあり、ユーザーは画像を中央ファイル サーバーにアップロードします。 3 つの Nginx のいずれかからイメージが要求されたとき、そのイメージがサーバー上にローカルに存在しない場合は、キャッシュとサービスのために中央のファイル サーバーからサーバーにダウンロードされます。この負荷分散された分散イメージ サーバー アーキテクチャ設計により、プライマリ ストレージ デバイスの負荷を軽減できます。
PHP-FPM
このウェブサイトはPHP-FPMで動作します。デュアル CPU と 6 GB のメモリを備えた 28 台の PHP マシンがあり、それぞれが 100 個の PHP-FPM ワーカー スレッドを実行しています。 APC を有効にして PHP5.3.x を使用します。 PHP5.3 では、CPU とメモリの使用量を 30% 以上削減できます。プログラムコードはSymfony1.2フレームワークに基づいて開発されています。 1 つは外部リソースを利用できること、もう 1 つはプロジェクト開発の進捗を向上させることができると同時に、よく知られたフレームワーク上で新しい開発者がチームに参加しやすくなることです。完璧なものはありませんが、Symfony フレームワークから多くのメリットを得ることができ、チームは Poppen.de のビジネス開発により集中できるようになります。
Webサイトのパフォーマンスの最適化には、Facebookがオープンソース化したクラスライブラリであるXHProfを使用します。このフレームワークはカスタマイズと構成が非常に簡単で、最も高価なサーバー計算をキャッシュできます。
MySQL
WebサイトのRDBMSとしてはMySQLが主流です。 Web サイトには複数の MySql サーバーがあり、4CPU、32 GB のサーバーには、基本情報、写真の説明情報などのユーザー関連情報が保存されます。このマシンは 4 年間使用されており、次のステップでは共有クラスターに置き換えます。データ アクセス コードを簡素化するために、設計は依然としてこのシステムに基づいています。 Web サイト内のほとんどの情報 (写真、ビデオ、メッセージなど) はユーザー中心であるため、データの分割はユーザー ID に基づいて行われます。マスター・スレーブ・スレーブ構成アーキテクチャでユーザーフォーラムサービスを提供するサーバーは3台あります。スレーブ サーバーは Web サイト上にカスタム メッセージを保存する役割を担っており、現在 2 億 5,000 万件のメッセージが存在します。他の 4 台のマシンはマスター/スレーブ構成になっています。さらに、ユーザー アクセス統計などの集中的な書き込み操作データを特に処理するために、4 台のマシンが NDB クラスターに構成されています。
データテーブルの設計では、関連付け操作を回避し、できるだけ多くのデータをキャッシュするように努める必要があります。もちろん、データベースの構造仕様は完全に破壊されています。したがって、検索を容易にするために、データベース設計ではデータ マイニング テーブルが作成されます。ほとんどのテーブルは MyISAM タイプのテーブルであり、高速な検索が可能です。現在の問題は、完全にロックされているテーブルが増えていることです。 Poppen.de は、XtraDB ストレージ エンジンへの移行を検討しています。