動的アプリケーションとは、c/c++、php、Java、perl、.netなどのサーバーサイド言語で開発されたネットワークアプリケーションを指します。 、Web サイトの静的コンテンツに関連するソフトウェア (フォーラム、オンライン フォト アルバム、デート、ブログ、その他の一般的なアプリケーションなど)。動的アプリケーション システムは通常、データベース システム、キャッシュ システム、分散ストレージ システムなどから切り離せません。
大規模動的アプリケーション システム プラットフォームは、主に、大規模なトラフィック、高同時実行性の Web サイト向けに確立された基盤となるシステム アーキテクチャを目的としています。大規模な Web サイトの運用には、Web サイト アプリケーションのスムーズな運用を確保するために、信頼性が高く、安全で、スケーラブルで、保守が容易なアプリケーション システム プラットフォームのサポートが必要です。
大規模な動的アプリケーション システムは、いくつかのサブシステムに分割できます:
1) Webフロントエンドシステム
2) 負荷分散システム
3) データベースクラスタシステム
4) キャッシングシステム
5) 分散ストレージシステム
6) 分散サーバー管理システム
7) コード配布システム
構造図:
異なるアプリケーションのサーバー共有、単一障害点の回避、集中管理、統一された構成などを実現するために、サーバーはアプリケーションごとに分割されず、すべてのサーバーが均一に使用され、複数のアプリケーションにサービスを提供できます。特定のアプリケーションへのアクセス数が増加すると、サーバー ノードを追加することでサーバー クラスター全体のパフォーマンスが向上し、他のアプリケーションにも恩恵がもたらされます。 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) 負荷分散クラスター内の各ノードは任意のデータ オブジェクトにアクセスでき、各ノードによるデータ処理は他のノードでも共有できるため、これらのノードで操作されるデータは論理的には全体であり、独立したデータではありません。リソース。
したがって、高性能の分散ストレージシステムは、大規模なWebサイトアプリケーションにとって非常に重要な部分です。 (分散ストレージ システムの簡単な説明をここに追加する必要があります。)
構造図:
Web サイトへのアクセス トラフィックが継続的に増加するにつれ、ほとんどのネットワーク サービスは負荷分散クラスターの形式で外部から提供され、クラスターの規模が拡大するにつれて、スタンドアロン マシンに基づく元のサーバー管理モデルではニーズを満たすことができなくなりました。 new 要件は、サーバーを集中、グループ化、バッチ、および自動化した方法で管理できること、および計画されたタスクをバッチで実行できることである必要があります。
分散サーバー管理システムのソフトウェアには優れたソフトウェアがいくつかありますが、より理想的なソフトウェアの1つがCfengineです。サーバーをグループ化し、異なるグループでシステム構成ファイル、スケジュールされたタスク、その他の構成をカスタマイズできます。これは C/S 構造に基づいており、すべてのサーバー構成および管理スクリプト プログラムは Cfengine サーバーに保存され、管理対象サーバーは Cfengine クライアント プログラムを実行し、SSL 暗号化接続を介してサーバーにリクエストを送信します。最新の設定ファイルと管理コマンド、スクリプト、パッチのインストール、その他のタスク。
サーバー集中管理ツール Cfengine を使用すると、大規模なサーバークラスター管理を効率的に実現できます。 ネットワークが接続できれば、管理対象サーバーと Cfengine Server を任意の場所に分散させることができ、迅速な管理を実現できます。 。
構造図:
Web サイトへのアクセス トラフィックの増加が続く中、クラスター環境でのプログラム コードの一括配布や更新に対応するために、ほとんどのネットワーク サービスは負荷分散クラスターの形で外部から提供されます。 プログラムコードリリースシステム。
この出版システムは、次の目標を達成するのに役立ちます:
1) 本番環境のサーバーは仮想ホストの形でサービスを提供するため、開発者がメンテナンスや直接操作に介入する必要がなく、リリースシステムを使用してターゲットサーバーにログインすることなくプログラムを配布できます。サーバ。
2) 内部開発、内部テスト、本番環境テスト、本番環境リリースの 4 つの開発段階の管理を実現する必要があり、各段階のコードリリースにリリースシステムが介入できます。
3) ソースコード管理とバージョン管理を実装する必要があり、SVN はこの要件を達成できます。
一般的に使用されるツール Rsync を使用して、対応するスクリプト ツールを開発することで、サーバー クラスター間のコード同期分散を実現できます。