目次
#● コンシューマー側が開始すると、コンテナーは、プロバイダー リストをリッスンしてプロバイダー情報を取得し、プロバイダーが変更されると、登録センターを通じてコン​​シューマーにただちに通知されます。
ホームページ Java &#&チュートリアル Java Dubbo アーキテクチャの全体的な設計方法は何ですか?

Java Dubbo アーキテクチャの全体的な設計方法は何ですか?

Apr 27, 2023 pm 09:52 PM
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 までご連絡ください。

    ホット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衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

    Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

    PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

    PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

    PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

    PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

    PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

    PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

    PHP対Python:コア機能と機能 PHP対Python:コア機能と機能 Apr 13, 2025 am 12:16 AM

    PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

    カプセルの量を見つけるためのJavaプログラム カプセルの量を見つけるためのJavaプログラム Feb 07, 2025 am 11:37 AM

    カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

    PHPの影響:Web開発など PHPの影響:Web開発など Apr 18, 2025 am 12:10 AM

    phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

    PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

    PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

    See all articles