検索
ホームページJava&#&チュートリアルJava Dubbo アーキテクチャの全体的な設計方法は何ですか?

    #1. Dubbo 呼び出し関係の説明

    java Dubbo架构整体设计方法是什么##1.1 コンポーネント

    主に次のとおりです4 つの部分で構成されます:

    # プロバイダー: サービスを公開するサービスプロバイダー

    プロトコル: プロバイダーとコンシューマー間のプロトコル対話データを担当します

    サービス: 実際のビジネス サービス情報はインターフェイスと実装として理解できます
    コンテナ: Dubbo の動作環境
    #コンシューマ: リモート サービスを呼び出すサービス コンシューマ
    プロトコル: プロバイダとコンシューマの間のプロトコル対話データを担当します
    クラスター: プロバイダー側​​でリスト情報を認識します。
    プロキシ: プロバイダーのサービス呼び出しプロキシとして理解でき、コンシューマーのインターフェイス呼び出しロジックを引き継ぎます。
    ● 登録: 登録センター。サービスの検出と登録に使用されます。ルーティング設定など。ワーク、プロバイダー、コンシューマーがここに登録されます
    # モニター: 呼び出し頻度、成功数と失敗数など、プロバイダーとコンシューマーに関するデータ統計に使用されます。

    1.2 開始

    #● プロバイダー側​​が開始すると、コンテナーはサービス情報をロードし、プロトコルを介して登録センターに登録します。

    #● コンシューマー側が開始すると、コンテナーは、プロバイダー リストをリッスンしてプロバイダー情報を取得し、プロバイダーが変更されると、登録センターを通じてコン​​シューマーにただちに通知されます。

    # コンシューマーはプロキシ モジュールを通じてリクエストを開始します。

    # コンシューマーはクラスター モジュールを使用して選択します。呼び出される実際のプロバイダー;
    ● コンシューマー コンシューマーのプロトコルを使用して、情報をプロバイダーに送信します。
    # プロバイダーは、プロトコル モジュールを通じてコン​​シューマー情報を処理します。
    # 最後に、プロバイダーのサービス ハンドル処理

    2. 全体的な呼び出しリンク

    説明: 薄緑色はサービス プロデューサーのスコープを表し、水色はサービス コンシューマーのスコープを表します。赤い矢印は呼び出しの方向を表します: ビジネス ロジック層 -> RPC 層 (リモート プロシージャ コール) -> リモート処理 (リモート データ送信) java Dubbo架构整体设计方法是什么

    全体的な呼び出しプロセスは次のとおりです。

    #● コンシューマは Interface を通じてメソッドを呼び出し、統一されます コンシューマ側の Proxy に引き渡され、ProxyFactory を通じてプロキシ オブジェクトが作成されます ここでは jdk の javassist 技術が使用されます #これは、統合フィルタリング要求を行うために Filter モジュールに渡されます# 次に、最も重要な Invoker 呼び出しロジックです

    ○ Directory を通じて設定から情報を読み取り、最後に list メソッドを通じてすべての Invoker を取得します

    ○ Cluster モジュールを通じて、選択した特定のルーティング ルールに従って起動者リストを選択します。
    ○ LoadBalance モジュールを通じて、負荷分散ポリシーに従って、リクエストを処理する特定の起動者を選択します。
    ○ 実行中にエラーが発生した場合、再試行メカニズムが Consumer ステージで構成されている場合、実行は再試行されます。
    # フィルターを使用して前後の実行関数をカプセル化し続けます。呼び出し側は特定の呼び出し側を選択します。 プロトコルを実行します。
    # クライアントエンコードとシリアル化を実行し、データを送信します
    # プロバイダーのサーバー層に到達して、受信したデータをデコードしてシリアル化します
    # エクスポーターを使用してエグゼキューターを選択します
    ● フィルターにプロバイダー側​​の処理を実行させます
    # Invoker を介してインターフェイスの特定の実装を呼び出し、その結果を返す
    #3. Dubbo の全体的な設計


    # 凡例:

    java Dubbo架构整体设计方法是什么## 図では、左側の水色の背景はサービス コンシューマが使用するインターフェイス、右側の薄緑色の背景はサービス コンシューマが使用するインターフェイスです。中心軸にあるインターフェースは、サービスプロバイダーとサービスプロバイダーの両方によって使用されます。

    # 図は上から下まで 10 層に分かれており、各層は一方向の依存関係を持っています。右側の黒い矢印は層間の依存関係を示しています。各層は上位層から剥がして再利用できます。それら、Service 層と Config 層は API、他のすべての層は SPI

    #● 図の緑のブロックは拡張インターフェイス、青のブロックは実装クラスです。図では、それぞれを関連付けるために使用される実装クラスのみを示していますレイヤー# 図中の青いブロックは 点線は初期化処理、つまり起動時のアセンブリチェーン 赤の実線はメソッド呼び出し処理、つまりランタイムコールチェーン 紫色の矢印は継承です。サブクラスは親クラスの同じノードとみなすことができます。行上のテキストは呼び出しメソッドです。

    Dubbo ソース コードの全体的な設計は、呼び出しリンクと非常によく似ています。ただし、ここではインターフェイスの具体的な実装と、左側にさらに詳細な階層区分が表示されており、後続のソース コード分析では、より重要なモジュールの実装にも焦点を当てます。



    以下は階層的な紹介です

    1. ビジネス ロジック層
    # サービス ビジネス層: インターフェイスや実装クラスなどのビジネス コードを含む
    2. RPC 層: リモート プロシージャ コール層
    # 構成設定層。 ServiceConfig と ReferenceConfig はコアであり、構成クラスを直接初期化したり、構成ファイルを解析したりできます
    # プロキシ サービス エージェント層は、プロデューサかコンシューマかに関係なく、フレームワークによってプロキシ クラスが生成されます。プロセスは上位層とビジネス層に対して透過的です。 リモート呼び出しは影響を受けません。
    # サービス URL をセンターとして、サービス アドレスの登録と検出をカプセル化する登録センター層です。
    # クラスター ルーティング層 (クラスター フォールト トレラント層)、複数のプロバイダーにルーティングと負荷を提供します。バランスが取れており、Invoker を中心として登録センターをブリッジします。
    # 監視層、RPC 呼び出し関連情報 (呼び出し数、障害状況など) を監視します。 、呼び出し時間、その他の統計情報はこの層で完成します
    # プロトコル リモート RPC 呼び出しをカプセル化する呼び出し層は、サービス公開であろうとサービス参照であろうと、主な機能として Invoker のライフ サイクル全体を担当します。プロトコルの入口。Dubbo のすべてのモデルは呼び出し側に近づきます。
    3. Rmoting 層: リモート データ送信層
    #交換情報交換層、リクエストとレスポンス モードをカプセル化し、リクエストを同期から非同期に変換します
    ● トランスポート ネットワークのトランスポート層。Netty や mina などのネットワーク送信インターフェイスを 1 つのネットワークに統合します。 送信インターフェイス
    # データ シリアル化層。フレームワーク全体でのデータ送信のシリアル化と逆シリアル化の管理を担当します。

    以上がJava Dubbo アーキテクチャの全体的な設計方法は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明
    この記事は亿速云で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
    高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?高度なJavaプロジェクト管理、自動化の構築、依存関係の解像度にMavenまたはGradleを使用するにはどうすればよいですか?Mar 17, 2025 pm 05:46 PM

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

    適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?適切なバージョン化と依存関係管理を備えたカスタムJavaライブラリ(JARファイル)を作成および使用するにはどうすればよいですか?Mar 17, 2025 pm 05:45 PM

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

    カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?カフェインやグアバキャッシュなどのライブラリを使用して、Javaアプリケーションにマルチレベルキャッシュを実装するにはどうすればよいですか?Mar 17, 2025 pm 05:44 PM

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

    キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPA(Java Persistence API)を使用するにはどうすればよいですか?Mar 17, 2025 pm 05:43 PM

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

    Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Javaのクラスロードメカニズムは、さまざまなクラスローダーやその委任モデルを含むどのように機能しますか?Mar 17, 2025 pm 05:35 PM

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

    See all articles

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

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

    AI Clothes Remover

    AI Clothes Remover

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

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    AI Hentai Generator

    AI Hentai Generator

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

    ホットツール

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    Safe Exam Browser

    Safe Exam Browser

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

    EditPlus 中国語クラック版

    EditPlus 中国語クラック版

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

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    WebStorm Mac版

    WebStorm Mac版

    便利なJavaScript開発ツール