背景 クラウドネイティブ時代の到来に伴い、Dubbo 3.0 の重要な目標はクラウドネイティブを完全に採用することです。このため、クラウド ネイティブへの適応性を高めるために、Dubbo 3.0 では、元のインターフェイス レベルのサービス検出メカニズムをアプリケーション レベルのサービス検出メカニズムに進化させました。 アプリケーションレベルのサービス検出メカニズムに基づいて、Dubbo 3.0 はフレームワークによって発生する追加のリソース消費を大幅に削減し、リソース使用率を大幅に向上させることができます。これは主に次の点に反映されます。 単一マシンの常駐メモリが75%減少 数百万のクラスターインスタンスをサポートできるクラスター登録センターの全体的なデータ量は 90% 以上減少しました。 アプリケーションレベルのサービス検出とは何ですか? 簡単に言えば、Dubbo はすべてのインターフェース情報を登録センターに登録していましたが、アプリケーション インスタンスには通常複数のインターフェースがあるため、登録されるデータの量が非常に多く、冗長になっています。アプリケーション レベルのサービス検出のメカニズムでは、同じアプリケーション インスタンスが登録センターに 1 つのデータのみを登録します。このメカニズムは主に以下の問題を解決します。 Spring Cloudなどの主流のマイクロサービスモデルに合わせる インターフェースレベルのサービス検出メカニズムのレジストリ内のデータ
アプリケーションレベルのサービス検出メカニズムのレジストリ内のデータ
比較すると、アプリケーション レベルのサービス検出メカニズムを使用すると、登録センターのデータ量が大幅に削減され、元のインターフェイス レベルのデータはメタデータ センターに保存されることがわかります。 サーバーはプロセス全体を公開します アプリケーションレベルのサービス検出メカニズムの導入後、Dubbo 3.0 サーバー公開のプロセス全体が以前とは大きく異なります。サーバー プロセス全体を公開するコア コードは、次のように DubboBootstrap#doStart にあります。
Zookeeper が Triple プロトコルの登録と公開のためのサービスとして使用されている場合、サーバー公開のプロセス全体のシーケンス図は次のようになります。 露出プロセス全体は非常に複雑で、次の 4 つの部分に分けられることがわかります。 injvm プロトコルのサービスを公開し、service-discovery-registry プロトコルを登録します。 Triple プロトコルのサービスを公開し、レジストリ プロトコルに登録します。 MetadataService サービスを公開します。以下では、これら 4 つの部分からサービス公開のプロセス全体を詳しく説明します。 1. injvmプロトコルサービスを公開する injvm プロトコルのサービスはローカルに公開されます。主な理由は、アプリケーションにはサービス (公開されたサービス) と参照 (サービス参照) の両方が存在することが多く、参照によって参照されるサービスはアプリケーションで公開されるサービスであるためです。この使用シナリオをサポートするために、Dubbo はサービスをローカルで公開する injvm プロトコルを提供します。これにより、参照はネットワークを経由せずにローカルで直接サービスを呼び出すことができます。 全体的なタイミング図 この部分は以前のインターフェース レベルのサービス検出メカニズムと似ているため、関連するコア コードについてはここでは説明しません。 2. サービス検出レジストリプロトコルを登録する サービス検出レジストリ プロトコルを登録する主な目的は、サービスに関連するメタデータを登録することです。デフォルトでは、メタデータは InMemoryWritableMetadataService を通じてローカル メモリとローカル ファイルに保存されます。 全体的なタイミング図 コア コードは、次のように ServiceConfig#exportRemote にあります。 サービス検出レジストリプロトコルのエントリを登録する
Invoker でのメタデータのパッケージ化 コア コードは、ServiceConfig#doExportUrl にあります。次のようになります。
RegistryProtocol 経由で Invoker を Exporter に変換する コア コードは、次のように ProtocolListenerWrapper#export にあります。
RegistryProtocol は Invoker を Exporter コアプロセスに変換します コア コードは、次のように RegistryProtocol#export にあります。
トリプルプロトコルを公開するサービス コア コードは、次のように RegistryProtocol#doLocalExport にあります。
サービス検出レジストリプロトコルを登録する コア コードは、次のように ServiceDiscoveryRegistry#register と ServiceDiscoveryRegistry#doRegister にあります。 1.サービスディスカバリレジストリ#登録
2. サービスディスカバリレジストリ#doRegister
登録メタデータ コア コードは、次のように InMemoryWritableMetadataService#exportURL にあります。
onRegisterイベントを公開 コア コードは、次のように ListenerRegistryWrapper#register にあります。
サービス登録イベントを公開する コア コードは、次のように RegistryProtocol#notifyExport にあります。
サービス検出レジストリ プロトコルを登録する主な目的は、サービス インターフェイスに関連する情報をメモリに保存することであることがわかります。互換性とスムーズな移行を考慮して、コミュニティは実装時に ServiceConfig の公開プロセスを再利用するというアプローチを採用しました。 3. トリプルプロトコルサービスを公開し、レジストリプロトコルを登録する トリプル プロトコル サービスの公開とレジストリ プロトコルの登録は、Dubbo 3.0 サービス公開のコア プロセスであり、次の 2 つの部分に分かれています。 トリプルプロトコルを公開するサービス レジストリ プロトコルの登録 Triple プロトコル サービスを公開するプロセスは、Injvm プロトコル サービスを公開するプロセスと同じなので、詳細には説明しません。レジストリ プロトコルを登録するプロセスでは、アプリケーション インスタンスに関連する情報のみが登録されます。これは、前述のアプリケーション レベルのサービス検出メカニズムです。 全体的なタイミング図 InterfacecompatibleRegistryProtocol 経由で Invoker を Exporter に変換する コア コードは、次のように ProtocolListenerWrapper#export にあります。
RegistryProtocol は Invoker を Exporter コアプロセスに変換します コア コードは、次のように RegistryProtocol#export にあります。
レジストリプロトコルを登録する コア コードは、次のように FailbackRegistry#register と ServiceDiscoveryRegistry#doRegister (ZookeeperRegistry は FailbackRegistry を継承) にあります。 1. フェイルバックレジストリ#register
2. サービスディスカバリレジストリ#doRegister
購読アドレスの変更 コア コードは、次のように FailbackRegistry#subscribe と ZookeeperRegistry#doSubscribe にあります。 1. フェイルバックレジストリ#subscribe
2. Zookeeperレジストリ#doSubscribe
公開されたトリプル プロトコル サービスとメタデータ間の接続を確立するためのコア コードは、次のように、ServiceConfig#exportUrl、MetadataUtils#publishServiceDefinition、InMemoryWritableMetadataService#publishServiceDefinition、RemoteMetadataServiceImpl#publishServiceDefinition、および MetadataReport#storeProviderMetadata にあります。 1. サービス構成#エクスポートUrl
2. メタデータユーティリティ#publishServiceDefinition
3. InMemoryWritableMetadataService#publishServiceDefinition
4. リモートメタデータサービス実装#publishServiceDefinition
5. 抽象メタデータレポート#storeProviderMetadata
Triple プロトコル サービスと MetadataReport サービスの関係を確立するためのコア コードは、次のように、ServiceConfig#exported、MetadataServiceNameMapping#map、および ZookeeperMetadataReport#registerServiceAppMapping にあります。 1. ServiceConfig#エクスポート
2. メタデータサービス名マッピング#map
3. Zookeeperメタデータレポート#registerServiceAppMapping
この時点で、トリプル プロトコル サービスを公開し、レジストリ プロトコルを登録するプロセスは完了です。主なことは、以前のインターフェース レベルのサービス検出メカニズムで登録センターに登録されたデータ (アプリケーション インスタンス データ + サービス インターフェース データ) を分割することです。登録レジストリプロトコル部分は、アプリケーションインスタンスデータを登録センターに登録します。エクスポーターが公開された後、MetadataUtils#publishServiceDefinition を呼び出すことによって、サービス インターフェイス データがメタデータ センターに登録されます。 4. MetadataService を公開する MetadataService は主に、コンシューマー側にメタデータを取得するための API を提供します。公開プロセスは、トリプル プロトコルのサービス公開プロセスを再利用します。 全体的なタイミング図 MetadataServiceエントリを公開する コアコードは DubboBootstrap#exportMetadataService にあります。次のようになります。
MetadataService の公開 コア コードは、次のように ConfigurableMetadataServiceExporter#export にあります。
MetadataService を公開するプロセスは、前述の Triple protocol サービスを公開するプロセスを再利用するため、プロセス全体にいくつかの違いがあります。これらの違いは上記のコードでマークされているため、ここでは繰り返さないことにします。 ServiceInstance の登録 ServiceInstance を登録する目的は、メタデータを定期的に更新することです。アップデートがあった場合、コンシューマー側が認識できるように、MetadataReport を通じてバージョン番号が更新されます。 コア コードは、次のように DubboBootstrap#registerServiceInstance と DubboBootstrap#doRegisterServiceInstance にあります。
DubboBootstrap#doRegisterServiceInstance
上記の分析により、簡単に知ることができる ServiceInstanceはメタデータに含まれています 要約する Dubbo 3.0サーバーの公開プロセス全体を分析すると、アプリケーションレベルのサービス検出メカニズムの実装ははるかに複雑ですが、ユーザーがスムーズに移行できるように、Dubbo 3.0は2.7.xバージョンと互換性があり、設計では多くの箇所が可能な限り再利用されていることがわかります。 Dubbo 3.0 が最近リリースしたベンチマーク データから判断すると、Dubbo 3.0 のパフォーマンスとリソース使用率は確かに大幅に向上しています。 Dubbo 3.0 がクラウド ネイティブを採用するまでには、まだ長い道のりが残っています。コミュニティは、Dubbo 3.0 のコア プロセスを整理し、最適化しています。後続のプランでは、複数インスタンスのアプリケーションの展開がサポートされます。 Dubbo のクラウド ネイティブ パスを目の当たりにすることに興味のある学生が、コミュニティへの貢献に積極的に参加できることを願っています。 |
<<: Zookeeper における Kafka のデータ構造を完全に説明する図
[[276793]] [51CTO.com クイック翻訳] あなたのビジネスはクラウドに移行する準備...
多くのウェブマスターはマーケティング志向のウェブマスターで、ウェブサイトを宣伝するためにあらゆる手段...
ユーザーエクスペリエンスに関して、多くの友人は、高品質のユーザーエクスペリエンスをどのように構築する...
ソフトウェア スタートアップの AtScale は、昨年末に毎年恒例のビッグ データ成熟度調査 (旧...
SEO 最適化の質によって、サイトが検索エンジンからどれだけのトラフィックを獲得できるかが決まります...
ウェブサイト分析ツールを最大限に活用するGoogle ウェブマスター ツールやその他のサービスを使用...
新しいウェブサイトを持っている友人の中には、半月や1か月も待たずに、主要な検索エンジンで新しいウェブ...
中国の企業サービス市場は、初期の情報化段階から現在のデジタル化に至るまで、1980年代に発展し始めま...
[要約] インターネットビジネスの収益貢献度という点では、検索エンジンは他のメディアやソーシャルネッ...
SEO がウェブサイトの運用に与える影響については多くの人が知っていると思いますが、仮想ホスティング...
gcorelabs は、地中海に近いイスラエル第 2 の都市テルアビブにデータセンターを追加しました...
月収10万元の起業の夢を実現するミニプログラム起業支援プランダブルイレブンが近づくにつれ、さまざまな...
トラフィック統計の差異の問題は、常に多くの入札ユーザーを悩ませてきました。 Google であれ B...
nodeserv.com は 2009 年に設立され、独自の IP (AS19757) を持っていま...
新時代の女性として、外見上の女性らしさを際限なく追求することなく、男性のような独立した心構えを持つこ...