BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JavaベースのRPCフレームワークApache Dubboがトップレベルプロジェクトに昇格

JavaベースのRPCフレームワークApache Dubboがトップレベルプロジェクトに昇格

ブックマーク

原文(投稿日:2019/06/07)へのリンク

Apache Software Foundationは先日、Apache Dubboをトップレベルプロジェクトとすることを発表した。Apache DubboはJavaをベースにした、オープンソースのリモートプロシージャコールフレームワークである。元々はAlibabaで開発されたもので、2011年にオープンソースとして公開され、2018年2月にApache Incubatorに入った。Dubboは、インターフェイスベースのリモートコール、フォールトトレランスとロードバランシング、自動サービス登録および検出などを、主要な機能として提供する。

Dubboのアーキテクチャを見てみよう。

(https://dubbo.apache.org/より引用)

  1. Containerは、サービスProviderのローンチ、ローディング、および実行を担当する
  2. Providerは、初期化中に、自身のサービスをRegisterに登録する
  3. Consumerは、起動時に、Registerから必要なサービスをサブスクライブする
  4. Registerは、ProviderのリストをConsumerに返すと同時に、変更が発生した場合には、変更されたデータをConsumerにプッシュする
  5. Consumerは、ソフトロードバランシングアルゴリズムに基づいてProviderを選択して実行し、障害が発生した場合には自動的に別のProviderを選択する
  6. ConsumerProviderは、いずれもサービスの呼び出し回数とメモリ内での時間消費をカウントし、統計情報をMonitorに毎分送信する

Apache Dubboの機能は次のとおりだ。

  • 透過的なインターフェイスをベースとするRPCである
  • 複数のロードバランス戦略をサポートする、インテリジェントなロードバランシングが、設定なしで使用可能である
  • 自動サービス登録および検出
  • 高度な拡張性、マイクロカーネルおよびプラグイン設計により、プロトコル、トランスポート、シリアル化などのコア機能が、サードパーティの実装によって容易に拡張可能であることを保証する
  • 実行時トラフィックルーティングにより、実行時の設定が可能で、さまざまなルールに従ってトラフィックをルーティングすることができることにより、ブルーグリーン・デプロイメントやデータセンタ対応のルーティングといった機能が簡単に実現可能である
  • 視覚化されたサービスガバナンスにより、サービスメタデータ、ヘルスステータス、統計情報のクエリなど、サービスガバナンスとメンテナンスのための豊富なツールを提供する

Dubboの利用を開始するには、最初にMavenmの依存関係を追加する。

<dependencies>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.7.2<</version>
    </dependency>
    <dependency>
        <groupId>org.apache.dubbo</groupId>
        <artifactId>dubbo-dependencies-zookeeper</artifactId>
        <version>2.7.2<</version>
        <type>pom</type>
    </dependency>
</dependencies>

次に、サービスインターフェイスを定義して、プロバイダに実装する。

package org.apache.dubbo.samples.api;

//service interface
public interface GreetingService {
    String sayHello(String name);
}
 
//provider, implementation of service interface
public class GreetingServiceImpl implements GreetingService {
    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}

それが完了したら、プロバイダを設定する。

パッケージorg.apache.dubbo.demo.provider; org.apache.dubbo.configをインポートします。ApplicationConfig; org.apache.dubbo.configをインポートします。RegistryConfig; org.apache.dubbo.configをインポートします。ServiceConfig; org.apache.dubbo.samples.apiをインポートします。GreetingService; java.ioをインポートします。IOException;パブリッククラスApplication {public static void main(String [] args)throws IOException {ServiceConfig serviceConfig = new ServiceConfig (); serviceConfig.setApplication(new ApplicationConfig( "first-dubbo-provider")); serviceConfig.setRegistry(new RegistryConfig( "multicast://224.5.6.7:1234")); serviceConfig.setInterface(GreetingService.class); serviceConfig.setRef(new GreetingServiceImpl()); serviceConfig.export(); System.in.read(); }}

次に、ビルドして実行します:

# mvn clean package
# mvn -Djava.net.preferIPv4Stack=true -Dexec.mainClass=org.apache.dubbo.demo.provider.Application exec:java

次のコードスニペットでは、コンシューマの記述方法を示す。

package org.apache.dubbo.demo.consumer;

import org.apache.dubbo.config.ApplicationConfig;
import org.apache.dubbo.config.ReferenceConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.samples.api.GreetingService;

public class Application {
    public static void main(String[] args) {
        ReferenceConfig referenceConfig = new ReferenceConfig();
        referenceConfig.setApplication(new ApplicationConfig("first-dubbo-consumer"));
        referenceConfig.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
        referenceConfig.setInterface(GreetingService.class);
        GreetingService greetingService = referenceConfig.get();
        System.out.println(greetingService.sayHello("world"));
    }
}

Dubboを使用して新たにプロジェクトを開始するのは、非常に簡単だ。上で我々が行ったようにするか、あるいは基本的にSpring initializrのフォークである、DubboのSpring initializrを使用すればよい。さらにDubboは、Java以外にもNode.jsPythonPHPをサポートする。

Apache Dubboは、Alibaba Group、China Life、China Telecom、Dangdang、Didi Chuxing、Haier、中国産業銀行、NetEase、Qunar、Youzanなどの企業で使用されている。

Dubboの詳細については、https://dubbo.apache.orgを参照して頂きたい。また、コントリビューションを希望する場合は、 コントリビュータ・ガイドを確認する必要がある。ドキュメントも用意されている。

この記事に星をつける

おすすめ度
スタイル

BT