>Java >java지도 시간 >SpringBoot2.0이 RPC 서비스의 원격 호출을 구현하는 방법

SpringBoot2.0이 RPC 서비스의 원격 호출을 구현하는 방법

WBOY
WBOY앞으로
2023-05-11 20:22:041329검색

1. Dubbo 프레임워크 소개

1. 프레임워크 종속성

SpringBoot2.0이 RPC 서비스의 원격 호출을 구현하는 방법

범례 설명:

1) 그림의 작은 사각형은 프로토콜, 클러스터, 프록시, 서비스, 컨테이너, 레지스트리, 레이어 또는 모듈을 나타내며, 파란색은 비즈니스와의 상호 작용을 나타내고, 녹색은 Dubbo 내에서만 상호 작용합니다.

2) 그림의 배경 사각형인 Consumer, Provider, Registry, Monitor는 배포 논리 토폴로지 노드를 나타냅니다.

3) 그림의 파란색 점선은 초기화 시 호출되고, 빨간색 점선은 런타임 시 비동기 호출, 빨간색 실선은 런타임 시 동기 호출됩니다.

4) 그림에는 RPC 계층만 포함되어 있으며 Remoting 계층은 전체적으로 포함되어 있지 않습니다.

2. 핵심 역할 설명

1) Provider는 서비스를 노출하는 서비스 제공자

2) Consumer는 원격 서비스(로드 밸런싱)를 호출하는 서비스 소비자

3) Registry는 서비스 등록을 위한 등록 센터입니다. 및 발견(모니터링), 하트비트, 킥아웃, 재진입)

4) 모니터 서비스 소비자와 제공자는 통화 횟수와 통화 횟수를 메모리에 축적하고, 1분마다 적극적으로 통계 데이터를 모니터링 센터에 보냅니다.

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接口,实体类

. 핵심 구성

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) 제공자 서비스 인터페이스

주의하세요. 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) 소비자 인터페이스

  • 여기의 주석에 주의하세요

  • 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) 서비스 공급자

두 가지 버전 동일한 인터페이스가 구현됩니다. 참고: 버전.

버전 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) 주석을 통해

을 호출합니다.

아아아아

위 내용은 SpringBoot2.0이 RPC 서비스의 원격 호출을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제