動的アプリケーションとは、フォーラム、オンライン フォト アルバム、デート、ブログ、その他の一般的なアプリケーションなど、C/C++、php、Java、perl、.net などのサーバーサイド言語で開発されたネットワーク アプリケーション ソフトウェアを指します。動的アプリケーション システムは通常、データベース システム、キャッシュ システム、分散ストレージ システムなどから切り離せません。
大規模な動的アプリケーション システム プラットフォームは、主に、大規模なトラフィック、高同時実行性の Web サイト向けに確立された基盤となるシステム アーキテクチャを目的としています。大規模な Web サイトの運用には、Web サイト アプリケーションのスムーズな運用を確保するために、信頼性が高く、安全で、スケーラブルで、保守が容易なアプリケーション システム プラットフォームのサポートが必要です。
大規模な動的アプリケーションシステムは、いくつかのサブシステムに分けることができます:
1) Webフロントエンドシステム
2) ロードバランシングシステム
3) データベースクラスターシステム
4) キャッシュシステム
5) 分散ストレージシステム
6) 分散サーバー管理システム
7) コード配布システム
Web フロントエンド システム
構造図:
異なるアプリケーションのサーバー共有を実現するために、単一点を避ける障害の発生防止や集中管理などの目的で、アプリケーションごとにサーバーを分割せず、各サーバーを均一に利用することで、特定のアプリケーションへのアクセス数が増加した場合、サーバー全体でサービスを提供することができます。サーバー ノードを追加することでクラスタに到達できるようになり、パフォーマンスの向上は他のアプリケーションにも利益をもたらします。 Web フロントエンド システムは、Apache/Lighttpd/Eginx などの仮想ホスト プラットフォームに基づいており、PHP プログラム の実行環境を提供します。サーバーは開発者にとって透過的であり、開発者がサーバー管理に介入する必要はありません
負荷分散システム
負荷分散システムは、ハードウェアとソフトウェアの 2 つのタイプに分けられます。 F5 などのハードウェア負荷分散は効率が高いですが、コストがかかります。ソフトウェア負荷分散システムは、ハードウェア負荷分散システムよりも安価または無料であり、効率も劣りますが、lvs や nginx など、平均的なトラフィックまたはわずかに大きいトラフィックの Web サイトには十分です。ほとんどの Web サイトでは、ハードウェアとソフトウェアの負荷分散システムを組み合わせて使用しています。
データベースクラスタシステム
構造図:
Webフロントエンドはサービスの有効性と拡張性を向上させるために負荷分散クラスタ構造を採用しているため、データベースも高信頼性を確保する必要があります。サービスシステム全体をどう構築し、大規模な同時処理を可能にする信頼性の高いデータベースシステムを構築するか。
上の図に示すようなソリューションを採用できます:
1) MySQLデータベースを使用し、読み取りが多く書き込みが少ないというWebアプリケーションデータベースの特性を考慮して、主に読み取りデータベースを最適化し、専用のデータベースを提供します。データベースの読み取りとデータベースの書き込み、読み取り操作と書き込み操作は、それぞれ異なるデータベースにアクセスするためにアプリケーションに実装されます。
2) MySQL レプリケーション機構を使用して、マスター データベース (書き込みデータベース) のデータベースをスレーブ データベース (読み取りデータベース) に迅速にコピーします。 1 つのマスター データベースは複数のスレーブ データベースに対応し、マスター データベースのデータはリアルタイムでスレーブ データベースに同期されます。餃子マシン www.yjlmj.com 整理して公開しました
3) 複数の書き込みデータベースがあり、それぞれを複数のアプリケーションで使用でき、書き込みデータベースのパフォーマンスのボトルネック問題と単一障害点の問題を解決できます。
4) 複数の閲覧データベースがあり、負荷分散装置により負荷分散を行うことで、閲覧データベースの高性能、高信頼性、高拡張性を実現しています。
5) データベースサーバーとアプリケーションサーバーは分離されています。
6) データベースからの負荷分散には BigIP を使用します。
キャッシュシステム
キャッシュはファイルキャッシュ、メモリキャッシュ、データベースキャッシュに分かれています。大規模な Web アプリケーションで最も一般的に使用され、最も効率的な方法はメモリ キャッシュです。最も一般的に使用されるメモリ キャッシュ ツールは Memcached です。正しいキャッシュ システムを使用すると、次の目標を達成できます:
1. キャッシュ システムを使用すると、アクセス効率が向上し、サーバーのスループットが向上し、ユーザー エクスペリエンスが向上します。
2. データベースとセーブセット サーバーへのアクセス負荷を軽減します。
3. 単一障害点を回避し、高い信頼性と拡張性を提供し、パフォーマンスを向上させるために、複数の Memcached サーバーがあります。
分散ストレージシステム
構造図:
Webシステムプラットフォーム ストレージ要件には以下の2つの特徴があります:
1) ストレージ量が多く、提供できないレベルに達することが多いフォト アルバム、ビデオ、その他のアプリケーションなど、単一のサーバー規模で管理できます。したがって、専門的な大規模ストレージ システムが必要になります。
2) ロードバランシングクラスター内の各ノードは任意のデータオブジェクトにアクセスでき、各ノードによるデータ処理は他のノードでも共有できるため、これらのノードで操作されるデータは論理的に1つだけであり、全体ではありません。独立したデータリソース。
したがって、高性能の分散ストレージシステムは、大規模なWebサイトアプリケーションにとって非常に重要な部分です。 (分散ストレージ システムについての簡単な説明をここに追加する必要があります。)
分散サーバー管理システム
構造図:
Web サイトのアクセス トラフィックが増加し続ける中、ほとんどのネットワーク サービスは負荷分散クラスターに基づいています。クラスター サイズの拡大に伴い、単一マシンに基づく元のサーバー管理モデルでは、サーバーを集中管理、グループ化、バッチ管理、自動管理できる必要があります。計画されたタスクをバッチで実行します。
分散サーバー管理システム ソフトウェアには優れたソフトウェアがいくつかありますが、より理想的なソフトウェアの 1 つが Cfengine です。サーバーをグループ化し、異なるグループでシステム構成ファイル、スケジュールされたタスク、その他の構成をカスタマイズできます。これは C/S 構造に基づいており、すべてのサーバー構成および管理スクリプト プログラムは Cfengine サーバーに保存され、管理対象サーバーは Cfengine クライアント プログラムを実行し、SSL 暗号化接続を介してサーバーにリクエストを送信します。最新の設定ファイルと管理コマンド、スクリプト、パッチのインストール、その他のタスク。
集中サーバー管理ツール Cfengine を使用すると、ネットワークが接続できればどこにでも管理対象サーバーと Cfengine Server を分散して管理することができ、効率的に大規模なサーバークラスター管理を実現できます。達成。 。
コード公開システム
構造図:
Webサイトへのアクセストラフィックの継続的な増加に伴い、クラスタ規模の拡大に伴い、ほとんどのネットワークサービスは負荷分散クラスタの形で外部から提供されています。クラスターのニーズ 環境内のプログラム コードの一括配布と更新のために、プログラム コード リリース システムも必要です。
この公開システムは、次の目標を達成するのに役立ちます:
1) 運用環境のサーバーは、開発者がメンテナンスや直接操作に介入する必要のない、仮想ホストの形式でサービスを提供します。ログインせずにサーバーを実装するために使用されます。プログラムはターゲットサーバーに配布されます。
2) 内部開発、内部テスト、本番環境テスト、本番環境リリースの 4 つの開発段階の管理を実現する必要があり、各段階のコードリリースにリリースシステムが介入できます。
3) ソースコード管理とバージョン管理を実装する必要があり、SVN はこの要件を達成できます。
ここでは、一般的に使用されるツール Rsync を使用して、対応するスクリプト ツールを開発することで、サーバー クラスター間のコード同期分散を実現できます。
上記では、さまざまな側面を含む大規模な Web システム アーキテクチャについて簡単に説明しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。