高同時実行性 (High Concurrency) とは、通常、システムが設計を通じて多くのリクエストを同時に並行して処理できることを保証することを指します。
一般的に、高い WEB 同時実行性の問題を解決する効果的な方法は、線形にスケーラブルなマルチレイヤーを採用することです。分散アーキテクチャ。,私の制作プロジェクトの構造は次のようなものですが、ここでいくつかのアイデアを紹介しましょう。
Web サーバー (Nginx): (推奨学習: PHP ビデオ チュートリアル )
このレイヤーは、インテリジェンス DNS と組み合わせて、簡単に配布および展開できます。解決策により、単一障害点を簡単に防止し、リージョン アクセスを高速化でき、LVS と組み合わせることで負荷分散を簡単に実現できます。
この層は主に静的リクエストの処理と、PHP リクエストを 2 番目の層の PHP 処理ノードに転送する役割を果たします。静的リソース アドレス (http://misc.xxxx.com) については、個別に展開するか、商用クラウド ストレージ サービスを直接使用します (中国では Qiniu が適しており、海外では Amazon S3 が適しています)
PHP 処理ノード:
ノードは実際にはシステムです特定のポートをリッスンするプロセスと Web サーバーのリクエストは、ロード バランサー (私は AWS のロードバランサーを使用しています) を通じて分散され、分散とロード バランシングを実現するのが非常に簡単です。
私はまだ PHP に付属の php-fpm を使用しています。実際、Facebook の hhvm のパフォーマンスは非常に強力ですが、プロジェクトの単体テストに 100% 合格することはできません。後でスムーズに置き換えることができます。 hhvm 成熟
キャッシュ:
は memcached を使用します。この層の主な機能は、データベース IO を削減し、ホット データ アクセスを高速化することです。キャッシュ戦略とプログラムのレベルが高いので詳細は省きますが、簡単に言うと2つの方法があり、1つはプログラムのグローバルレベルでキャッシュ処理を追加する方法で、コード結合度は低いですが実効ヒット率は高くなります。は高くない プロジェクトによっては適さない場合もある もう1つは、特定のプログラムにキャッシュを追加する データアクセスポイントにキャッシュ処理を追加する この方法はプログラム結合度が高いが、キャッシュヒット率が低い非常に高く、無効なキャッシュはほとんどありません。私はこれを使用しています。
データベース:
現在のプロジェクトのデータ規模は大きくなく、当面はデータベースを 1 つだけ使用しますが、プログラム ロジックは線形的なものに対応する準備ができています。データベースの拡張。
実際、データベース層の拡張は一般的です。一般的な方法は、サブデータベースとサブテーブルです。これには、初期のコードで基礎を築く必要があります。別のよりスムーズな方法は、ミドルウェアを使用することです。 、360 の Atlas、アリババババの cobar、タオバオの TDDL などのミドルウェアは、大規模なコード変更なしで拡張できますが、特定の使用シナリオは依然として限定されており、特定のプロジェクトを個別に検討する必要があります。
その他:
さまざまなプロジェクトによると、アーキテクチャではキューを選択的に使用することもできます。現在 Beantalkd を使用していますが、Redis も良い選択です。キューの一般的な使用環境は電子メールの送信とサイト内メッセージのプッシュですが、一部のシナリオではコア データベースのバッファとしても使用でき、大規模な同時実行や突然のトラフィックを処理する場合にも適しています
以上がphp の同時実行性の高い Web サイトとは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。