##1.1 コンポーネント
# プロバイダー: サービスを公開するサービスプロバイダー
プロトコル: プロバイダーとコンシューマー間のプロトコル対話データを担当しますサービス: 実際のビジネス サービス情報はインターフェイスと実装として理解できます
コンテナ: Dubbo の動作環境
#コンシューマ: リモート サービスを呼び出すサービス コンシューマ
プロトコル: プロバイダとコンシューマの間のプロトコル対話データを担当します
クラスター: プロバイダー側でリスト情報を認識します。
プロキシ: プロバイダーのサービス呼び出しプロキシとして理解でき、コンシューマーのインターフェイス呼び出しロジックを引き継ぎます。
● 登録: 登録センター。サービスの検出と登録に使用されます。ルーティング設定など。ワーク、プロバイダー、コンシューマーがここに登録されます
# モニター: 呼び出し頻度、成功数と失敗数など、プロバイダーとコンシューマーに関するデータ統計に使用されます。
1.2 開始
#● コンシューマー側が開始すると、コンテナーは、プロバイダー リストをリッスンしてプロバイダー情報を取得し、プロバイダーが変更されると、登録センターを通じてコンシューマーにただちに通知されます。
# コンシューマーはプロキシ モジュールを通じてリクエストを開始します。# コンシューマーはクラスター モジュールを使用して選択します。呼び出される実際のプロバイダー;
● コンシューマー コンシューマーのプロトコルを使用して、情報をプロバイダーに送信します。
# プロバイダーは、プロトコル モジュールを通じてコンシューマー情報を処理します。
# 最後に、プロバイダーのサービス ハンドル処理
2. 全体的な呼び出しリンク
説明: 薄緑色はサービス プロデューサーのスコープを表し、水色はサービス コンシューマーのスコープを表します。赤い矢印は呼び出しの方向を表します: ビジネス ロジック層 -> RPC 層 (リモート プロシージャ コール) -> リモート処理 (リモート データ送信)
全体的な呼び出しプロセスは次のとおりです。
#● コンシューマは Interface を通じてメソッドを呼び出し、統一されます コンシューマ側の Proxy に引き渡され、ProxyFactory を通じてプロキシ オブジェクトが作成されます ここでは jdk の javassist 技術が使用されます #これは、統合フィルタリング要求を行うために Filter モジュールに渡されます# 次に、最も重要な Invoker 呼び出しロジックです
○ Directory を通じて設定から情報を読み取り、最後に list メソッドを通じてすべての Invoker を取得します○ Cluster モジュールを通じて、選択した特定のルーティング ルールに従って起動者リストを選択します。
○ LoadBalance モジュールを通じて、負荷分散ポリシーに従って、リクエストを処理する特定の起動者を選択します。
○ 実行中にエラーが発生した場合、再試行メカニズムが Consumer ステージで構成されている場合、実行は再試行されます。
# フィルターを使用して前後の実行関数をカプセル化し続けます。呼び出し側は特定の呼び出し側を選択します。 プロトコルを実行します。
# クライアントエンコードとシリアル化を実行し、データを送信します
# プロバイダーのサーバー層に到達して、受信したデータをデコードしてシリアル化します
# エクスポーターを使用してエグゼキューターを選択します
● フィルターにプロバイダー側の処理を実行させます
# Invoker を介してインターフェイスの特定の実装を呼び出し、その結果を返す
#3. Dubbo の全体的な設計
## 図では、左側の水色の背景はサービス コンシューマが使用するインターフェイス、右側の薄緑色の背景はサービス コンシューマが使用するインターフェイスです。中心軸にあるインターフェースは、サービスプロバイダーとサービスプロバイダーの両方によって使用されます。
#● 図の緑のブロックは拡張インターフェイス、青のブロックは実装クラスです。図では、それぞれを関連付けるために使用される実装クラスのみを示していますレイヤー# 図中の青いブロックは 点線は初期化処理、つまり起動時のアセンブリチェーン 赤の実線はメソッド呼び出し処理、つまりランタイムコールチェーン 紫色の矢印は継承です。サブクラスは親クラスの同じノードとみなすことができます。行上のテキストは呼び出しメソッドです。
Dubbo ソース コードの全体的な設計は、呼び出しリンクと非常によく似ています。ただし、ここではインターフェイスの具体的な実装と、左側にさらに詳細な階層区分が表示されており、後続のソース コード分析では、より重要なモジュールの実装にも焦点を当てます。
以下は階層的な紹介です
1. ビジネス ロジック層
# サービス ビジネス層: インターフェイスや実装クラスなどのビジネス コードを含む
2. RPC 層: リモート プロシージャ コール層
# 構成設定層。 ServiceConfig と ReferenceConfig はコアであり、構成クラスを直接初期化したり、構成ファイルを解析したりできます
# プロキシ サービス エージェント層は、プロデューサかコンシューマかに関係なく、フレームワークによってプロキシ クラスが生成されます。プロセスは上位層とビジネス層に対して透過的です。 リモート呼び出しは影響を受けません。
# サービス URL をセンターとして、サービス アドレスの登録と検出をカプセル化する登録センター層です。
# クラスター ルーティング層 (クラスター フォールト トレラント層)、複数のプロバイダーにルーティングと負荷を提供します。バランスが取れており、Invoker を中心として登録センターをブリッジします。
# 監視層、RPC 呼び出し関連情報 (呼び出し数、障害状況など) を監視します。 、呼び出し時間、その他の統計情報はこの層で完成します
# プロトコル リモート RPC 呼び出しをカプセル化する呼び出し層は、サービス公開であろうとサービス参照であろうと、主な機能として Invoker のライフ サイクル全体を担当します。プロトコルの入口。Dubbo のすべてのモデルは呼び出し側に近づきます。
3. Rmoting 層: リモート データ送信層
#交換情報交換層、リクエストとレスポンス モードをカプセル化し、リクエストを同期から非同期に変換します
● トランスポート ネットワークのトランスポート層。Netty や mina などのネットワーク送信インターフェイスを 1 つのネットワークに統合します。 送信インターフェイス
# データ シリアル化層。フレームワーク全体でのデータ送信のシリアル化と逆シリアル化の管理を担当します。
以上がJava Dubbo アーキテクチャの全体的な設計方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

WebStorm Mac版
便利なJavaScript開発ツール
