ホームページ > Java > &#&チュートリアル > SpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法

SpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法

WBOY
リリース: 2023-05-11 20:22:04
転載
1322 人が閲覧しました

1. Dubbo フレームワークの概要

1. フレームワークの依存関係

SpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法

凡例の説明:

1) 図内の小さなボックス (プロトコル、クラスター、プロキシ、サービス、コンテナー、レジストリ、およびモニター) はレイヤーまたはモジュールを表します。青いものはビジネスとの対話を示し、緑色のボックスはビジネス内でのみ対話します。ダボ。

2) 図の背景の四角形のコンシューマ、プロバイダ、レジストリ、およびモニタは、展開論理トポロジ ノードを表します。

3) 図中の青い点線は初期化中に呼び出され、赤い点線は実行時の非同期呼び出し、赤い実線は実行時に同期的に呼び出されます。

4) この図には RPC 層のみが含まれており、リモート処理層は含まれていません。リモート処理全体はプロトコルに暗黙的に含まれています。

2. コアの役割の説明

1) プロバイダーはサービスを公開するサービスプロバイダーです

2) コンシューマーはサービスコンシューマー (ロード) を呼び出しますリモート サービスの残高)

3) レジストリ サービスの登録および検出登録センター (監視、ハートビート、キックアウト、再エントリ)

4) サービスのコンシューマとプロバイダの累積呼び出し時間を監視するメモリ内と通話時間を監視し、統計データを毎分監視センターに積極的に送信します。

5) コンテナを実行するコンテナ サービス: リモート呼び出し、シリアル化

2. SpringBoot2 との統合.0

1. コアの依存関係

<!-- 这里包含了Zookeeper依赖和Dubbo依赖 -->
<dependency>
 <groupid>com.alibaba.boot</groupid>
 <artifactid>dubbo-spring-boot-starter</artifactid>
 <version>0.2.0</version>
</dependency>
ログイン後にコピー

2. プロジェクト構造の説明

SpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法

構造説明

dubbo-consume:服务消费方
dubbo-provider:服务提供方
dubbo-common:公共代码块,Dubbo接口,实体类
ログイン後にコピー

3. コア構成

1 )プロバイダー構成

server:
 tomcat:
 uri-encoding: UTF-8
 max-threads: 1000
 min-spare-threads: 30
 port: 7007
 connection-timeout: 5000ms
spring:
 application:
 name: block-dubbo-provider
# Dubbo 配置文件
dubbo:
 application:
 name: block-dubbo-provider
 registry:
 address: 127.0.0.1:2181
 protocol: zookeeper
 protocol:
 name: dubbo
 port: 20880
 scan:
 base-packages: com.boot.consume
ログイン後にコピー

2) コンシューマー構成

server:
 tomcat:
 uri-encoding: UTF-8
 max-threads: 1000
 min-spare-threads: 30
 port: 7008
 connection-timeout: 5000ms

spring:
 application:
 name: block-dubbo-consume
# Dubbo 配置文件
dubbo:
 application:
 name: block-dubbo-consume
 registry:
 address: 127.0.0.1:2181
 protocol: zookeeper
ログイン後にコピー

3. デモケース

1. サービスリモート呼び出し

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

ここに注釈を付けてください com.alibaba.dubbo.config.annotation.Service

@Service
@Component
public class DubboServiceImpl implements DubboService {
  private static Logger LOGGER = LoggerFactory.getLogger(DubboServiceImpl.class) ;
  @Override
  public String getInfo(String param) {
    LOGGER.info("字符参数:{}",param);
    return "[Hello,Cicada]";
  }
  @Override
  public UserEntity getUserInfo(UserEntity userEntity) {
    LOGGER.info("实体类参数:{}",userEntity);
    return userEntity;
  }
}
ログイン後にコピー

2) Consumer インターフェイス

  • ##ここに注釈を入れてください

  • com.alibaba.dubbo.config.annotation.Referenceorg.springframework.stereotype.Service

@Service
public class ConsumeService implements DubboService {
  @Reference
  private DubboService dubboService ;
  @Override
  public String getInfo(String param) {
    return dubboService.getInfo(param);
  }
  @Override
  public UserEntity getUserInfo(UserEntity userEntity) {
    return dubboService.getUserInfo(userEntity);
  }
}
ログイン後にコピー

2 、インターフェイス タイムアウト設定

この構成は、サービス プロバイダーまたはサービス コンシューマーで構成できます。ここでは、プロバイダーでの構成のデモを示します。注: タイムアウト 1) サービス インターフェイス アノテーション

@Service(timeout = 2000)
@Component
public class DubboServiceImpl implements DubboService {
}
ログイン後にコピー
2) コンシューマ呼び出し

 @Override
 public String timeOut(Integer time) {
   return dubboService.timeOut(time);
 }
ログイン後にコピー
3) テスト インターフェイス

サービス タイムアウトにより例外がスローされる

com .alibaba.dubbo.remoting.TimeoutException

3. インターフェースのマルチバージョン構成

1) サービスプロバイダー

同じインターフェースの 2 つのバージョンを提供します。注: バージョン。

バージョン 1:

@Service(version = "1.0.0")
@Component
public class VersionOneImpl implements VersionService {
  @Override
  public String getVersion() {
    return "{当前版本:1.0.0}";
  }
}
ログイン後にコピー
バージョン 2:

@Service(version = "2.0.0")
@Component
public class VersionTwoImpl implements VersionService {
  @Override
  public String getVersion() {
    return "{当前版本:2.0.0}";
  }
}
ログイン後にコピー
2) コンシューマーは @Reference(version) アノテーションを通じて

を呼び出します。異なるバージョン インターフェイスの実装。

rree

以上がSpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート