初心者向けの Dubbo 入門チュートリアル

ダボ

Dubbo と RPC の関係

Dubbo は 、Alibaba によって開発されたオープンソースの分散サービス フレームワークです。アプリケーションに高性能 RPC (リモート プロシージャ コール) 通信およびサービス ガバナンス機能を提供し、アプリケーションが分散環境で信頼性と拡張性の高いサービスを迅速に構築できるようにします。Dubbo のコア機能には、サービスの登録と検出、負荷分散、サービスの呼び出しとフォールト トレランスなどが含まれます。複数の言語や複数の異種環境でのコミュニケーションに適しています。Dubbo は、ブロッキング I/O とスレッド プールを使用して高い同時実行性を実現し、複数のプロトコルとシリアル化形式の拡張もサポートします。そのエコシステムはますます充実しており、ユーザーコミュニティも活発であり、Webアプリケーション、エンタープライズミドルウェア、ビッグデータなどの分野で広く利用されています。

ダボの核心

Dubbo のコアには次のものが含まれます。

  • リモート通信: Dubbo は、Dubbo プロトコル、 HTTP プロトコル、RMI プロトコルなど、さまざまなリモート通信プロトコルを提供します。このうち、Dubbo プロトコルは、Dubbo に付属するバイナリの高性能な RPC 通信プロトコルであり、シリアル化およびデシリアル化のオーバーヘッドが低く、同時実行性が高くデータ量が多いサービス通信に適しています。
  • クラスターのフォールト トレランス: Dubbo コンシューマーがサービス コールを開始すると、Dubbo はフェイルオーバー、フェイルファースト、フェイルセーフ、フェイルバックなどのさまざまなクラスター フォールト トレランス戦略を提供します。フェイルオーバーは、Dubbo のデフォルトのクラスター フォールト トレラント戦略であり、サービス プロバイダーがエラーを起こしたりタイムアウトした場合に、他の利用可能なノードに自動的に切り替えて通話を行い、通話の信頼性を確保します。
  • 自動検出: 多くのサービス プロバイダーの管理を容易にするために、Dubbo はサービスの登録と検出のための集中管理ツールとして登録センターを提供します。Dubbo は、ZooKeeper、Redis、Consul、Etcd などの複数のレジストリをサポートします。サービス利用者は登録センターを通じて、サービス プロバイダーのアドレスを手動で構成することなく、利用可能なサービス プロバイダーを自動的に検出できるため、サービス呼び出しの複雑さが大幅に軽減されます。

ダボとスプリングクラウドの違い

Dubbo は高性能 RPC フレームワークであり、主にマイクロサービス アーキテクチャの下でサービス ガバナンスとサービス コミュニケーションを構築するために使用されます。サービスを簡単に拡張し、システムのパフォーマンスと拡張性を向上させることができます。

Spring Cloud は完全なマイクロサービス フレームワークであり、サービスの登録と検出、構成センター、負荷分散、サーキット ブレーカー、ルーティングなどを含む、Dubbo よりも包括的なマイクロサービス フレームワーク ソリューションの完全なセットを提供します。

深い理解:マイクロサービス フレームワークの比較: Spring Cloud と Dubbo

ダボのノード

  • プロバイダー: サービスを公開し、サービスをレジストリに登録し、コンシューマーが呼び出すのを待ちます。
  • コンシューマ: レジストリからサービスをサブスクライブし、サービス プロバイダーと通信し、サービスを利用します。
  • レジストリ: サービス プロバイダーに関する情報、およびサービス プロバイダーとサービス利用者の関係を記録し、利用者が利用可能なサービス インスタンスを発見できるようにします。
  • 監視: Dubbo ノードのパフォーマンス指標、サービス コール統計などを収集し、運用および保守担当者が監視および管理できるようにします。
  • コンテナ: サービスの実行中のコンテナ

ダボのフレームワーク

Dubbo のフレームワークには次のものが含まれます。

  • 単一アプリケーション フレームワーク: トラフィックが少ない場合に適しています
  • 垂直アプリケーション フレームワーク: トラフィックが大きい場合に適用可能
  • 分散サービス アーキテクチャ: 垂直アプリケーション アーキテクチャが多数ある場合に適しています
  • フロー コンピューティング アーキテクチャ: トラフィックが非常に多い場合、ディスパッチ センターが必要になります

ダボサービス

ダボインターフェース定義

SayHello メソッドを書くことができます。

/** * xml方式服务提供者接口 */ public interface ProviderService { String SayHello(String word); }

次に、その実装クラスを定義します。

/** * xml方式服务提供者实现类 */ public class ProviderServiceImpl implements ProviderService{ public String SayHello(String word) { return word; } }

次に、Maven の依存関係をインポートします。

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ouyangsihai</groupId> <artifactId>dubbo-provider</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- https: //mvnrepository.com/artifact/com.alibaba/dubbo --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.6</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.5</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.32.Final</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>2.8.0</version> </dependency> </dependencies> </project>

Dubbo インターフェースの公開

インターフェイスを作成した後、インターフェイスにアクセスできるように、インターフェイスを公開する必要があります。

package com.sihai.dubbo.provider; import com.alibaba.dubbo.config.ApplicationConfig; import com.alibaba.dubbo.config.ProtocolConfig; import com.alibaba.dubbo.config.RegistryConfig; import com.alibaba.dubbo.config.ServiceConfig; import com.alibaba.dubbo.container.Main; import com.sihai.dubbo.provider.service.ProviderService; import com.sihai.dubbo.provider.service.ProviderServiceImpl; import org.springframework.context.support.ClassPathXmlApplicationContext; import java.io.IOException; /** * xml方式启动 * */ public class App { public static void main( String[] args ) throws IOException { //加载xml配置文件启动 ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/provider.xml"); context.start(); System.in.read(); // 按任意键退出 } }

ダボサービスを開始する

最後に、Dubbo サービスを起動します。以下のログが表示されれば、起動は成功しています。

知識の拡大:

 

おすすめ

転載: blog.csdn.net/m0_71808387/article/details/131573506