すべてのプロダクト
Search
ドキュメントセンター

Enterprise Distributed Application Service:Enterprise Distributed Application Service: 開発者ガイド

最終更新日:Mar 11, 2026

Enterprise Distributed Application Service (EDAS) は、マイクロサービスアプリケーションの構築に Apache Dubbo をサポートします。本ガイドでは、Dubbo のサービスプロバイダーインタフェース (SPI) 拡張システム、フレームワークの内部構造、および設計原則について説明します。

SPI 拡張システムの仕組み

Dubbo は、コアをモジュール化するために軽量な SPI メカニズムを採用しています。主要なコンポーネント(プロトコル、ロードバランサー、ルーター、レジストリなど)はすべて、プラグイン可能な拡張ポイントとして定義されています。これにより、以下の操作が可能です。

  • 組み込み実装の差し替え:フレームワークのコードを変更せずに、単一の設定プロパティを変更するだけで実現できます。

  • カスタム実装の追加:Java インターフェイスを実装し、SPI ファイルを通じて登録することで実現できます。

  • 動作の透過的拡張:Dubbo はサードパーティ製の拡張と組み込み実装を同等に扱います。

基盤となるアーキテクチャについては、以下の「フレームワーク設計」と「SPI 読み込み」のトピックから始めることを推奨します。

SPI 拡張の実装

Dubbo では、機能別に分類された 20 を超える拡張ポイントが定義されています。各拡張ポイントは、カスタム実装をサポートする Java インターフェイスです。

RPC およびトラフィック管理

拡張ポイント制御対象
Protocolリモート呼び出しのネットワークプロトコル
Filterロギングや認証などの横断的関心事に対応する、リクエストおよび応答のフィルターチェーン
Cluster呼び出しが失敗した際のフォールトトレランス戦略(例:フェールオーバー、フェールファスト、フォーク)
Routerトラフィックをどのプロバイダーに配信するかを決定するルーティングルール
LoadBalance複数のプロバイダー間でのリクエスト配信戦略
Mergerフォーク呼び出しにおける結果のマージロジック

サービスディスカバリーおよび構成管理

拡張ポイント制御対象
Registryサービスレジストリとの連携
Monitorメトリクス収集およびモニタリングデータの報告

トランスポートおよびシリアル化

拡張ポイント制御対象
Transporterネットワークトランスポート層
Exchangerトランスポート層上でのリクエスト・応答交換パターン
Networkerマルチレジストリシナリオにおけるネットワークトポロジ管理
Serializationデータのシリアル化フォーマット

ライフサイクルおよびプロキシ処理

拡張ポイント制御対象
InvokerListenerサービス呼び出しイベントが発生した際にトリガーされるコールバック
ExporterListenerサービス公開イベントが発生した際にトリガーされるコールバック
ExtensionFactory拡張インスタンスの作成および管理を行うファクトリ
ProxyFactoryサービスプロキシの作成を行うファクトリ
Compiler動的な Java ソースコードのコンパイル
Dispatcher受信メッセージに対するスレッド配信戦略
ThreadPoolサービス実行時のスレッドプール戦略

診断およびユーティリティ

拡張ポイント制御対象
TelnetHandlertelnet 経由のランタイム管理コマンドを処理するハンドラー
StatusCheckerサービスステータス報告のためのヘルスチェックロジック
PageHandler組み込み HTTP サーバー向けのステータスページレンダリング
Containerサービスコンテナのライフサイクル管理
Cache繰り返し呼び出しに対する結果キャッシュ戦略
Validation呼び出し前のパラメーター検証
LoggerAdapter異なるロギングフレームワークを統合するためのアダプター

フレームワークの内部構造

これらのトピックでは、Dubbo の構築方法および SPI メカニズムの内部動作について説明します。

トピック内容
Source code buildリポジトリから Dubbo のソースコードをビルドする方法
Framework design全体のアーキテクチャ、レイヤード設計、およびモジュール間依存関係
SPI loadingDubbo が SPI 拡張を検出し、読み込み、インスタンス化する仕組み
Implementation detailsコアコンポーネントの内部実装
Configuration center分散サービス向けの集中型構成管理
Public agreementDubbo コンポーネント間で共有される公開プロトコル規則および契約

設計原則

Dubbo フレームワークは、これらのトピックで文書化された一連の設計原則に従って開発されています。フレームワークへの貢献やカスタム拡張の構築時には、本項を参照してください。

トピック内容
Attention to detailフレームワークコードにおいて、エッジケースや細かな設計判断が重要である理由
Foundational design patternsコードベース全体で使用されるコア設計パターンおよび規則
Extensibility and incremental extension後方互換性と合成可能性を備えた拡張の設計方法
Configuration design構成パラメーターおよびデフォルト値の設計に関するガイドライン
Robustnessフレームワークにおけるエラー処理、レジリエンスパターン、防御的コーディング
Fool-proof design明確な API、妥当なデフォルト値、入力検証によって誤用を防止する設計
Extension point refactoring拡張ポイントインタフェースのリファクタリングを行うタイミングおよび方法

コード品質基準

トピック内容
Versioningバージョン番号付けの規則および互換性保証
Checklistフレームワーク変更に対するリリース前検証チェックリスト
Code smellsDubbo フレームワークコードで回避すべき一般的なアンチパターン
Coding conventionsコードスタイル、命名規則、およびフォーマット基準
Compatibility testing後方互換性および前方互換性のテスト戦略