階層化は、エンタープライズ アプリケーション システムで最も一般的なアーキテクチャ パターンです。システムは水平方向にいくつかの部分に分割されます。各部分は比較的単純で単一の責任を負い、上位層は下位層に依存します。スケジュール管理により完全なシステムが形成されます。
Web サイトの階層構造には、アプリケーション層、サービス層、データ層という 3 つの一般的な層があります。アプリケーション層は特にビジネスとビューの表示を担当し、サービス層はアプリケーション層にサービス サポートを提供し、データベースはデータベース、キャッシュ、ファイル、検索エンジンなどのデータ ストレージ アクセス サービスを提供します。
階層化されたアーキテクチャは論理的であり、物理的には 3 層アーキテクチャを同じ物理マシン上に配置できますが、Web サイト ビジネスの発展に伴い、すでに階層化されたモジュールを個別に配置する必要があります。つまり、3 層構造はさまざまなサーバーに展開され、Web サイトがより多くのコンピューティング リソースを備えて、ますます多くのユーザーの訪問に対応できるようになります。
したがって、階層化アーキテクチャ モデルの本来の目的は、開発とメンテナンスを容易にするためにソフトウェアの明確な論理構造を計画することですが、Web サイトの開発プロセスでは、Web サイトが開発をサポートするために階層構造が非常に重要です。高い同時実行性と分散方向。
Web サイトは 7 時間×24 時間継続的に実行する必要があるため、特定のマシンがダウンしたときにアクセスできなくなることを防ぐために、対応する冗長性メカニズムが必要です。冗長性は、少なくとも 2 台のサーバーを展開してクラスタを形成することで実現できます。高いサービスを実現します。定期的なバックアップに加えて、データベースにはホット バックアップとコールド バックアップも実装する必要があります。災害復旧データセンターは、世界中に展開することもできます。
階層化がソフトウェアを水平方向に分割することである場合、パーティショニングはソフトウェアを垂直方向に分割することです。
Web サイトが大規模になると、機能が複雑になり、サービスやデータ処理の種類も増加しますが、これらのさまざまな機能やサービスを分離し、結合度が高く、結合度の低いモジュール単位にパッケージ化することは、ソフトウェアの開発と結合を容易にするだけでなく、また、メンテナンスにより、さまざまなモジュールの分散展開が容易になり、Web サイトの同時処理能力と機能拡張能力が向上します。
大規模な Web サイトの分割の粒度は非常に小さい場合があります。たとえば、アプリケーション層では、ショッピング、フォーラム、検索、広告などのさまざまなビジネスが異なるアプリケーションに分離され、対立するチームがそれらを担当し、異なるサーバーにデプロイされます。
非同期を使用すると、ビジネス間のメッセージの受け渡しが同期呼び出しではなく、ビジネス操作を複数のステージに分割し、各ステージが非同期で実行され、データを共有して連携することができます。
特定の実装は、マルチスレッド共有メモリを通じて単一サーバー内で処理できます。分散システムでは、分散メッセージ キューを通じて非同期実装を実現できます。
典型的な非同期アーキテクチャはプロデューサー/コンシューマー メソッドであり、この 2 つの間に直接呼び出しはありません。
大規模な Web サイトの場合、階層化と分離の主な目的の 1 つは、分割されたモジュールの分散展開を容易にすることです。つまり、異なるモジュールが異なるサーバーに展開され、リモート呼び出しを通じて連携します。分散とは、同じ作業を実行するためにより多くのコンピュータを使用できることを意味します。コンピュータが増えるほど、CPU、メモリ、およびストレージ リソースが増え、処理できる同時アクセスとデータの量が増えるため、より多くのユーザーにサービスを提供できます。
Web サイト アプリケーションでは、一般的に使用される分散ソリューションがいくつかあります。
分散アプリケーションとサービス: 階層化され分離されたアプリケーションとサービス モジュールの分散展開により、Web サイトのパフォーマンスと同時実行性が向上し、開発とリリースが高速化され、データベース接続リソースの消費が削減されます。
分散型静的リソース: JS、CSS、ロゴ画像、その他のリソースなどの Web サイトの静的リソースは、分散型でデプロイされ、独立したドメイン名を採用します。これは、人々がよく静的と動的の分離と呼ぶものです。リソース。静的リソースを分散配置すると、アプリケーション サーバーの負荷圧力が軽減され、独立したドメイン名を使用することでブラウザの同時読み込みが高速化されます。
分散データとストレージ: 大規模な Web サイトでは、P 単位で大量のデータを処理する必要があります。1 台のコンピュータでは、そのような大きなストレージ スペースを提供できません。これらのデータベースには分散ストレージが必要です。
分散コンピューティング: 現在、Web サイトでは一般に、このようなバッチ計算に Hadoop および MapReduce 分散コンピューティング フレームワークが使用されており、モバイル データではなくモバイル コンピューティングが特徴です。コンピューティング プログラムは、コンピューティングと配布を高速化するためにデータの場所に分散されます。計算します。
Web サイトにはセキュリティ アーキテクチャの観点から多くのモードがあります: パスワードと携帯電話の確認コードによる ID 認証; ログインとトランザクションのためにネットワーク通信を暗号化する必要がある; ロボット プログラムによるリソースの悪用を防ぐために、確認コードを使用する必要がある識別のため、一般的な XSS 攻撃と SQL インジェクションにはエンコード変換が必要、スパム情報はフィルタリングする必要があるなど。
具体的には、自動リリースプロセス、自動コード管理、自動テスト、自動セキュリティ検出、自動デプロイメント、自動モニタリング、自動アラーム、自動フェイルオーバー、自動障害回復などが含まれます。
ユーザー アクセスが集中化されているモジュールの場合、独立して展開されたサーバーをクラスタ化する必要があります。つまり、複数のサーバーが同じアプリケーションを展開してクラスターを形成し、負荷分散装置を通じて共同で外部サービスを提供します。
サーバー クラスターは、同じサービスに対してより多くの同時サポートを提供できるため、より多くのユーザーがアクセスする場合、クラスターに新しいマシンを追加するだけで済みます。さらに、サーバーの 1 つが失敗した場合、この時点でリクエストは負荷分散フェイルオーバー メカニズムを通じてクラスター内の他のサーバーに転送されるため、システムの可用性が向上します。
キャッシュの目的は、サーバーの計算を軽減し、データをユーザーに直接返せるようにすることです。今日のソフトウェア設計では、キャッシュがあらゆる場所に使用されています。具体的な実装には、CDN、リバース プロキシ、ローカル キャッシュ、分散キャッシュなどが含まれます。
キャッシュを使用するには 2 つの条件があります: データ ホットスポットへのアクセスがアンバランスである、つまり、頻繁にアクセスされる一部のデータをキャッシュに配置する必要がある、データは一定期間内は有効ですが、すぐに期限切れになります。ダーティ リードはデータの正確性に影響を与えます。
以上が乾いたもの! 9 つの高性能かつ同時実行性の高い技術アーキテクチャの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。