手の春の雲とダボの完璧な融合「春クラウドアリババ」

昔、春の雲の最初に基本的なチュートリアルに従事、この記事を書いた:「マイクロサービスアーキテクチャの選択肢のための基本的なフレームワーク:春クラウドやダボを?"、多くの読者が見ている可能性があります。それは私がダボながら、言及したクリアテキストを持っており、春クラウドダボ自体は公平ではない、比較、主に前者の方がより多くの完全なフレームワークプログラムであるという事実のうち、どのようにこれら2つのフレームワークの選挙の問題についてされた後ちょうどRPCサービスのガバナンスおよび実装。

ダボのための国で非常に大規模なユーザーベースを持っているが、周辺施設やコンポーネントが比較的それほど完璧ではありません。多くの開発者は非常にユーザー生態春クラウドを楽しみたいので、春の雲ダボで表示される使用方法のいくつかのケースがあるでしょうが、ほとんどのダボ春クラウド使用シナリオの統合はより厄介ですされています。これは、冒頭でのZooKeeperをサポートしていないシステムレジストリにも、春のクラウドサポートZooKeeperの後に二つの異なる登録センターは、あるということですので、多くのプログラムをZooKeeperの、そして春のクラウドを使用して、レジストリDubbod主な原因ですが、理由はサービスの粒子サイズはまた、格納された情報と矛盾しています。だから、長い時間のために、それは完璧な統合プログラムされているどちらもガバナンスのサービスレベル、インチ

春の雲アリババまで、我々はこの問題を解決することができました。前のチュートリアルでは、我々は、サービスレジストリなどナコスで春の雲アリババの使用を導入している、との伝統的な春のクラウドアプリケーションが実現され、このサービス消費の下で、同じまたは装うリボンを使用してすることができます。ダボ:これは、我々は次の春クラウドアリババ追加のサポートRPCプログラムについて話をし続けなければなりません。

ケースを取得します

我々は最初の単純な例を直感的にサービスを実装するためにナコスサービスレジストリ、サービスプロバイダーと消費者の使用ダボの下に感じます。ここでは、インストールとナコスを使用ナコスがわからない場合、あなたはこのシリーズの閲覧ができ、省略使用ナコスは、サービス登録と発見を実現直接ダボの使用には、次の手順を。

サービスインタフェースを構築

例えば、単純なJavaプロジェクト、および以下に定義する抽象インタフェースを作成します。

public interface HelloService {

    String hello(String name);

}
复制代码

ビルサービスプロバイダインタフェース

最初のステップ:で、春のブートプロジェクトを作成しますpom.xml:よう、APIパッケージとナコスとダボの春の雲アリババの信頼を構築するための最初のステップを導入

    <dependencies>
        <!-- 第一步中构建的API包 -->
        <dependency>
            <groupId>com.didispace</groupId>
            <artifactId>alibaba-dubbo-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>        
            <!--<groupId>com.alibaba.cloud</groupId>-->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        //...
    </dependencies>
复制代码

ここで注意すべき二つのこと:

  1. これは、含まれている必要がありspring-boot-starter-actuator、パッケージを、またはエラーを起動します。
  2. spring-cloud-starter-dubboパケットことに注意groupIdスプリングクラウドalibabaのバージョン依存の特定の用途に応じて決定されます。
    • プロジェクトのインキュベーションの間、使用groupIdします:org.springframework.cloud ;
    • インキュベーションプロジェクトの後、使用してgroupId修正順序をcom.alibaba.cloudユーザーが正しいかどうかに注意を払う必要がありますので、。問題の対応JARパッケージ未満をロードしないでください。

ステップ二つ:インタフェースダボを実装

@Service
public class HelloServiceImpl implements HelloService {

    @Override
    public String hello(String name) {
        return "hello " + name;
    }

}
复制代码

注:この@Serviceコメントは春ではなく、org.apache.dubbo.config.annotation.Serviceノート。

スリーステップ:設定ダボのサービス関連情報、例えば:

spring.application.name=alibaba-dubbo-server
server.port=8001

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

# 指定 Dubbo 服务实现类的扫描基准包
dubbo.scan.base-packages=com.didispace.alibaba.dubbo.server
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.registry.address=spring-cloud://localhost
复制代码

設定は以下のとおりです。

  • dubbo.scan.base-packages:ダボ指定されたサービス実装クラスのスキャンベンチマークキット
  • dubbo.protocol:ダボサブ属性名はプロトコルの名前であることを特徴とする請求サービス・プロトコル・コンフィギュレーションを、露出、ポートはポートプロトコルである(-1手段は最初20880から、ポートをインクリメント)
  • dubbo.registry「:// localhostの春・クラウド」、春の雲のレジストリをマウントする説明:サブ属性の値が取り組むダボサービスレジストリの設定、

注意:必要が割り当てを増やすためにするとき、あなたは春ブーツ2.1以降を使用している場合spring.main.allow-bean-definition-overriding=true

四ステップ:例えば、メインクラスを作成します。

@EnableDiscoveryClient
@SpringBootApplication
public class DubboServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboServerApplication.class, args);
    }

}
复制代码

消費者向けサービス・インターフェースを構築します

最初のステップ:で、春のブートプロジェクトを作成しpom.xml、APIパッケージとナコスとダボの春の雲アリババの依存度を構築するための最初のステップを導入し、特定のコンテンツやサービスプロバイダーは、一貫しています。

    <dependencies>
        <!-- 第一步中构建的API包 -->
        <dependency>
            <groupId>com.didispace</groupId>
            <artifactId>alibaba-dubbo-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>        
            <!--<groupId>com.alibaba.cloud</groupId>-->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-dubbo</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>

        //...
    </dependencies>
复制代码

二つのステップ:設定ダボのサービス関連情報、例えば:

spring.application.name=alibaba-dubbo-client
server.port=8002

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.registry.address=spring-cloud://localhost
dubbo.cloud.subscribed-services=alibaba-dubbo-server
复制代码

注意:

  1. 増加よりも、ここで複数dubbo.cloud.subscribed-servicesのパラメータの構成サービスのサービス名に加入することを約束しalibaba-dubbo-server、対応するサービスの一の側に設けられているspring.application.nameサービス・プロバイダ・アプリケーション側の名前である値。
  2. あなたは春ブーツ2.1以降では、割り当てを増やす必要性を使用している場合spring.main.allow-bean-definition-overriding=true

ステップ三:メイン・クラスを作成し、インターフェイスを実装して、ダボでこのインターフェースをサービスを呼び出す、など:

@EnableDiscoveryClient
@SpringBootApplication
public class DubboClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(DubboClientApplication.class, args);
    }

    @Slf4j
    @RestController
    static class TestController {

        @Reference
        HelloService helloService;

        @GetMapping("/test")
        public String test() {
            return helloService.hello("didispace.com");
        }
    }

}
复制代码

注:この@Referenceコメントは、org.apache.dubbo.config.annotation.Reference

テストと認定

上記のすべての開発が完了した後、我々はナコスでは、サービスプロバイダ、サービスコンシューマためには、起動することができます。スタートを完​​了した後、我々は次のようなサービスナコスコンソールのリストに上記で定義された2つのサービスを見ることができます:

ファイル

次に、定義された顧客サービスを呼び出すことができ/test、消費者のダボのサービス・インターフェースをトリガします。すべてが順調に進めば、あなたは次のような結果を得ることができる必要があります:

$ curl localhost:8002/test
hello didispace.com
复制代码

概要

上記の例では、あなたが確かに感情的に、同じ時間と春クラウドダボでプレイした場合。あなたはこれらの二つの異なるミドルウェアの健康についても心配しながら、ユーレカと飼育係の設定を心配する必要はありません同時に、唯一の良いナコス缶を集中し、維持する必要があります。ダボの構成と使用については、構成が非常に簡単ですが、コードを書くには、以前のダボと大差はありません。また、上、春クラウドユーザーのためのサービス・レベル管理を、しかし、春クラウドアリババの統合の下では、ダボのユーザーは、パフォーマンス上の利点をもたらしますが、また、より良い様々な恩恵春クラウドを楽しむことができ、元のRPCを楽しむことができますいずれか良いオプション。それは非常に良い融合だったので、お互いの成果で役割を果たし、これはこれらの2つのユーザー・グループの真の統合であると言うことができます。春の雲春の雲アリババとチュートリアルの内容について詳しいことができます参照してくださいするにはここをクリック

参考公式文書

サンプルコード

この記事では、クライアントコードの内容を説明し、読者が次の例の倉庫を表示することができalibaba-dubbo-apialibaba-dubbo-serveralibaba-dubbo-clientプロジェクト:

あなたはこれらのことに興味がある場合は、スターを歓迎し、サポートを転送し、ブックマークに従ってください!>私の社会的関心の番号へようこそ:プログラム猿DD、排他的な学習リソースを整理し、毎日呉服を押します。:あなたは私のトピックの内容に興味があるなら、あなたは私のブログに焦点を当てることができdidispace.com

おすすめ

転載: juejin.im/post/5d5a0657f265da03f564e2c1
おすすめ