Dubbo Mesh: from service framework to unified service control platform

Apache Dubbo は、マイクロサービスアーキテクチャにおけるサービスガバナンスと通信の課題を解決するための RPC サービス開発フレームワークです。Java、Golang などの多言語 SDK を公式に提供しています。Dubbo で開発されたマイクロサービスは、リモートアドレス検出と相互通信の機能をネイティブに備えています。Dubbo が提供する豊富なサービスガバナンス機能により、サービス検出、負荷分散、トラフィックスケジューリングなどのサービスガバナンス要件を実現できます。Dubbo は高い拡張性を持つよう設計されており、トラフィックのインターセプトや位置特定に関するさまざまなカスタムロジックを容易に実装できます。

Dubbo 3 とは?

Dubbo 3 は Dubbo 2 の基本アーキテクチャを維持し、マイクロサービス間のプロセス間通信の解決を主な責務としつつ、アドレス検出やトラフィック管理などの豊富なサービスガバナンス機能によりマイクロサービスクラスターをより良く制御します。Dubbo 3 のフレームワーク全体のアップグレードは包括的で、Dubbo のコア機能のほぼすべての側面に反映されています。このアップグレードにより、安定性、パフォーマンス、拡張性、使いやすさが総合的に向上しました。

汎用通信プロトコル。新しい RPC プロトコルは独自プロトコルスタックを廃止し、より汎用的な HTTP/2 プロトコルをトランスポートレイヤーのキャリアとして採用しています。HTTP プロトコルの標準化された特性により、トラフィックの汎用性と透過性の課題を解決し、フロントエンドとバックエンドの接続やゲートウェイプロキシなどのシナリオにさらに適切に対応できます。また、ストリーム通信方式をサポートし、さまざまなビジネス通信モデルの要件に対応して、クラスターのスループットを大幅に向上させます。

100 万規模のクラスターインスタンスに対応し、クラスターは高い拡張性を備えています。マイクロサービスの実践の推進に伴い、マイクロサービスクラスターのインスタンス規模は拡大し続けています。これはマイクロサービスの軽量さと容易な水平拡張性によるものですが、同時にクラスター全体のキャパシティ、特に一部の集中型サービスガバナンスコンポーネントに負荷をもたらしています。Dubbo 3 は、インスタンス規模の拡大に伴うさまざまなリソースのボトルネックを解決し、真に無制限の水平拡張を実現する必要があります。

クラウドネイティブへの対応。クラウドネイティブ時代において、基盤インフラの変化はアプリケーションのデプロイメント、運用保守、さらには開発プロセスに深く影響を与えており、Dubbo 3 マイクロサービス技術ソリューションの選択やデプロイモードにも影響を及ぼしています。Dubbo 3 はサービス検出モデルにおいてクラウドネイティブインフラのモデルに完全に整合し、Kubernetes などのコンテナスケジューリングプラットフォームとアドレス指定、ライフサイクルなどの設計を整合できます。

今後の Dubbo が解決すべき課題

Dubbo 3 の機能がほぼ出揃った現在、Dubbo の全体的なアーキテクチャを改めて見直し、以下の課題をまとめます。

ビジネスコードと各マイクロサービスコンポーネントの直接的な結合により、アップグレードが困難

現在のデプロイモードでは、コンポーネントを統合するためにビジネスコード環境内でコンポーネントの適合作業が必要です。簡単な例を挙げると、ユーザー定義のデータ形式変換コンポーネントにアクセスする場合、Dubbo SPI に基づいて対応する適応実装をビジネスコードに織り込む必要があります。このデプロイモードはビジネスデプロイへの高い侵入性をもたらします。変換コンポーネントのアップグレードが必要な場合、そのコンポーネントをデプロイしているすべてのビジネス当事者にアップグレードを促す必要があり、本番環境では極めて困難です。

多言語実装の高い複雑さ

現在、Dubbo のすべての処理ロジックは SDK の形でビジネスコードに統合されており、クロス言語の呼び出しが必要な場合に実装の複雑さが高くなる問題を必然的にもたらします。Dubbo において、Java と Golang の SDK 実装を除き、他の言語には依然として完全な実装が不足しています。さらに、インターセプタ機能一つをとっても、言語とインターフェイス設計の違いにより、Java SDK での実装を Golang SDK で直接再利用できず、ミドルウェア開発にある程度の困難さと不安定性をもたらしています。

データサイドへのガバナンス機能の沈殿により、ミドルウェアのガバナンス機能が分断化

現在の Dubbo デプロイモードでは、ミドルウェアのガバナンス機能にアクセスする際、データサイドでビジネスコードに直接統合する必要があります。この方式は各ガバナンスコンポーネントが独立して動作することにつながります。全体から見ると、データサイドへのアクセスは非常に混沌としており、統一された視点からのガバナンスを行えません。同時に、これらのコンポーネントは個別にアクセスされるため、一部のシナリオではコンポーネント間の連携を十分に活かせません。

Dubbo Mesh

Dubbo Mesh は、アーキテクチャとデプロイ形態においてコントロールプレーンとデータプレーンを明確に分離しています。

コントロールプレーンはサービスガバナンスのコアとして、抽象的で統一されたモデルを持ち、基盤インフラとの接続を担当し、起動設定、サービス検出、トラフィック管理から認証・認可まで、統一された管理ポータルを提供します。

データサイドはビジネスプログラミングモデルと通信機能に注力し、SDK、Sidecar、Agent などの複数のデプロイ形態によるサービスガバナンス機能へのアクセスを提供し、動的デプロイ機能によりビジネスコードから切り離されています。

総じて、データプレーンはより軽量で集中的であり、コントロールプレーンはより結束力が高く強力です。コントロールプレーンを 1 セットデプロイするだけで、本番レベルのサービスガバナンス機能を利用できます。

Dubbo Mesh の責務と機能を、コントロールプレーンとデータプレーンの 2 つに分けて説明します。

Dubbo コントロールプレーン

コントロールプレーンはサービスガバナンスのコアです。抽象的で統一されたモデルを持ち、基盤インフラとの接続を担当し、起動設定、サービス検出、トラフィック管理から認証・認可まで、統一された管理ポータルを提供します。

1. 抽象的なサービスガバナンスモデル:Dubbo コントロールプレーンは Dubbo の高い拡張性を受け継ぎ、各コンポーネントに対してさまざまなフィールドと拡張ポイントを定義しています。カスタムコンポーネントを追加でき、標準フォーマットで拡張するだけで、Dubbo Mesh 内のコンポーネントを素早くデプロイ、起動、ホットアップデートできます。

2. インフラストラクチャとコンポーネントの抽象化:Dubbo コントロールプレーンは、Kubernetes などのインフラストラクチャへのアクセスをコンポーネントの形で内部に統合し、データプレーンに対する各インフラストラクチャの違いを遮蔽し、ネイティブ Kubernetes デプロイ、VM デプロイ、ハイブリッドデプロイなどのシナリオをサポートします。

3. 統一されたサービスガバナンスルール:Dubbo コントロールプレーンは、統一されたサービスガバナンスルールの連携と、1 セットのルールによる複数のフレームワークのガバナンスをサポートします。

4. クロス言語サポート:Dubbo コントロールプレーンは共通データフォーマットを通じて制御データを配信し、データプレーンの複数のデプロイ方式と組み合わせてクロス言語のガバナンス課題を解決します。

Dubbo データプレーン

Dubbo データプレーンはビジネスプログラミングモデルと通信機能に注力し、複数のアクセス方法を提供するとともに、Dubbo コントロールプレーンからのコンポーネント管理と連携し、コンポーネントのホットアップデートによりコントロールプレーンから発行されるガバナンスルールの識別と実行機能を動的にサポートします。

1. プログラミングと通信への注力:Dubbo データプレーンは、プログラミングモデルによるビジネス開発者のサポートにさらに注力します。ユーザーはシンプルな呼び出し API に依存するだけで対応する RPC リモート呼び出しを完了でき、背後のガバナンス機能へのアクセスを気にする必要がなくなります。

2. 複数のアクセス方法:Dubbo データプレーンは今後、SDK ベースのプロキシレスモードアクセス、Agent ベースの透過的アクセス、Sidecar ベースのクロス言語アクセスをサポートし、可能な限り幅広いユースケースをカバーして全体の使いやすさを向上させます。

3. コンポーネントのホットアップデート:Dubbo データプレーンは、Dubbo コントロールプレーンから発行されるガバナンスコンポーネント機能の動的ロードと更新をサポートします。ガバナンス機能の管理は Dubbo コントロールプレーンに閉じて一元管理し、運用プロセスを改善します。

4. ガバナンスルールの識別と実行:Dubbo データプレーンは主にガバナンスルールの識別と実行を担当し、動的ロード機能により対応するガバナンス機能をロードして、データプレーントラフィックのガバナンスを実現します。

Related Articles

Explore More Special Offers

  1. Short Message Service(SMS) & Mail Service

    50,000 email package starts as low as USD 1.99, 120 short messages start at only USD 1.00

phone お問い合わせ
Hi, I'm Alibaba Cloud AI Assistant!
I can help with questions and solutions.