ホームページ  >  記事  >  Java  >  SpringBoot2.0 が RPC サービスのリモート呼び出しを実装する方法

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

WBOY
WBOY転載
2023-05-11 20:22:041261ブラウズ

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 までご連絡ください。