1. 従来のプロジェクトとインターネットプロジェクトの違い
従来のプロジェクト:
OA、HR、CRM およびその他のシステム 対象グループ: 企業従業員
特徴: プロジェクト ユーザーが少なく、同時実行性が比較的低く、ユーザー許容度が高い。
インターネット プロジェクト:
淘宝網、天猫、JD.com 対象グループ: インターネット
特徴: 多数のユーザー、多数の訪問、ユーザー エクスペリエンスをより重視: 美しさ、機能性、速度、安定性
インターネット プロジェクトの場合、バックエンド エンジニアが速度と安定性を調整できます。
速度: 新しいページを開くのにかかる時間はわずかで、ページ間の遅延はありません。
安定性:Webサイトの99.9%は年間を通じて問題なく正常にアクセス可能
2. 大規模なインターネット プロジェクトのアーキテクチャ目標:
インターネットプロジェクトの特徴:
-
多くのユーザー
-
大量のトラフィックと高い同時実行性
-
大量のデータ
-
脆弱
-
面倒な機能
-
すぐに変更してください
Web サイトのパフォーマンス指標の測定
- 応答時間: リクエストの実行開始時刻から最後に応答データを受信するまでにかかる合計時間
- 同時実行性: システムが同時に処理できるリクエストの数
- 同時接続数: クライアントがサーバーへのリクエストを開始し、TCP 接続を確立することを指します。サーバーへの 1 秒あたりの TCP 接続の合計数です。
- リクエスト数: QPS (Query Per Second) とは、1 秒あたりのリクエスト数を指します。
- 同時ユーザー数: 単位時間当たりのユーザー数
- スループット: システムが単位時間あたりに処理できるリクエストの数を指します。
- QPS: Query Per Second とは、1 秒あたりのリクエスト数を指します。
- TPS: 1 秒あたりのトランザクション数 1 秒あたりのトランザクション数
- トランザクションとは、クライアントがサーバーにリクエストを送信し、サーバーが応答するプロセスを指します。クライアントは、リクエストの送信時に計測を開始し、サーバーの応答の受信時に終了します。これは、使用時間と完了したトランザクションの数を計算するために使用されます。
インターネット プロジェクトのアーキテクチャ上の目標
- 高性能: 高速アクセス エクスペリエンスを提供します。
- 高可用性: Web サイトのサービスには常に通常どおりアクセスできます。
- スケーラブル:ハードウェアの増減により処理能力を増減可能(容量拡張を大幅に促進)
- 高い拡張性: システム間の結合が低く、新しい機能モジュールを追加または削除することで簡単に追加または削除できます。
- セキュリティ: 安全な Web サイト アクセスとデータ暗号化、安全なストレージ戦略を提供します。
- 機敏性: ニーズに適応し、迅速に対応します。
クラスタ化および分散
集まる:
- よくある説明: 多くのマシンが同じことをしている
- 専門的な説明: ポリモーフィック サーバーにデプロイされたビジネス モジュール
配布:
-
一般的な説明: 多数のマシンがあり、各クラスターは異なる処理を実行します。それらを合わせると、複雑なイベントになります (それぞれの処理には異なるパフォーマンス要件があるため、専門的な処理は専門的に行われます)
-
専門的な説明: 大規模なビジネス システムが小規模なビジネス セクションに分割され、さまざまなマシンに展開されます。
クラスター アーキテクチャ下のプロジェクトは、次の特性を満たします。
-
高パフォーマンス: クラスターはスケーラブルであり、パフォーマンスが十分でない場合は、マシンを追加してパフォーマンスを確保できます。
-
高可用性: 1 台のマシンがダウンしない限り、サービスを提供できます。
クラスター分散アーキテクチャは、インターネット システムのアーキテクチャ上の目標を十分に満たすことができます。
-
高パフォーマンス: クラスターはスケーラブルであり、パフォーマンスが十分でない場合は、マシンを追加してパフォーマンスを確保できます。
-
高可用性: 1 台のマシンがダウンしない限り、サービスを提供できます。
-
スケーラブル: さまざまなサービスのパフォーマンス要件に応じて、さまざまなサービス クラスターを動的に拡張および縮小します。
-
高いスケーラビリティ: 特定のサービスを追加または削減する必要がある場合は、そのサービスに応答するクラスターを増減するだけで済みます。
アーキテクチャの進化
モノリシックアーキテクチャ
すべてのサービスは 1 つのサーバーにデプロイされます
- 利点: 開発と展開が簡単で、小規模なプロジェクトに適しています。
- 欠点:
- コード量が多く、プロジェクトの起動が遅い
- 信頼性が低い
- スケーラビリティが低い
- 拡張性と保守性が低い
- 低性能
垂直アーキテクチャ
垂直アーキテクチャとは、単一アーキテクチャ内の複数のモジュールを複数の独立したプロジェクトに分割し、複数の独立した単一アーキテクチャを形成することです。
モノリシック アーキテクチャの問題:
- プロジェクトはゆっくりと始まります
- 信頼性が低い
- スケーラビリティが低い
- 拡張性と保守性が低い
- 低性能
垂直アーキテクチャの問題:
- 重複した関数が多すぎます
分散アーキテクチャ
分散アーキテクチャとは、垂直アーキテクチャに基づいてパブリック ビジネス モジュールを抽出し、それらを独立したサービスとして他の消費者に提供して、サービスの共有と再利用を実現することを指します。
- RPC:Remote Procedure Call リモート プロシージャ コール。
垂直アーキテクチャの問題:
- 重複した関数が多すぎます
分散アーキテクチャの問題:
- サービスプロバイダーが変更されると、すべてのプロバイダーを変更する必要があります
SOAアーキテクチャ
SOA: (サービス指向アーキテクチャ、サービス指向アーキテクチャ) は、アプリケーションのさまざまな機能単位 (サービスと呼ばれる) を分割し、これらのサービス用に定義されたインターフェイスとコントラクトを通じてそれらを接続するコンポーネント モデルです。
ESB: (Enterprise Service Bus) エンタープライズ サービス バス、サービス仲介。主にサービス間のやり取りを提供します。ESBには、ロードバランシング、フロー制御、暗号化処理、サービス監視、例外処理、緊急監視などの機能が含まれています。
分散アーキテクチャの問題:
- サービスプロバイダーが変更されると、すべてのプロバイダーを変更する必要があります
マイクロサービスアーキテクチャ
- マイクロサービス アーキテクチャは、SOA を昇華したものです。マイクロサービス アーキテクチャでは、「ビジネスは完全にコンポーネント化され、サービス指向である必要がある」という重要な点が強調され、元の単一のビジネス システムが、独立して開発、設計、運用できる複数のシステムに分割されます。小さなアプリケーション、これらの小さなアプリケーション間の対話と統合は、さまざまなサービスを通じて完了します
- マイクロサービス アーキテクチャ = 80% SOA サービス アーキテクチャの考え方 + 100% コンポーネント アーキテクチャの考え方 + 80% ドメイン モデリングの考え方
特徴:
- サービスはコンポーネント化されています。開発者は開発テクノロジーを自由に選択でき、チームが同じである必要はありません。
- サービス間の対話には通常 REST API が使用されます
- 分散化: 各マイクロサービスには、ビジネス データを永続化するための独自のプライベート データベースがあります。
- 自動展開: アプリケーションを独立した個別のサービスに分割して、自動展開、テスト、運用、メンテナンスを容易にします。