SpringBoot 2.0 Dubbo 프레임 워 크 통합 RPC 서비스 원 격 호출 방법
1.프레임 의존
그림 설명:
1)그림 에서 작은 사각형 Protocol,Cluster,Proxy,Service,Container,Registry,Monitor 대표 층 또는 모듈,파란색 표 시 는 업무 와 상호작용 을 하고 녹색 표 시 는 Dubbo 내부 에 만 상호작용 을 한다.
2)그림 에서 배경 사각형 Consumer,Provider,Registry,Monitor 는 논리 토폴로지 노드 를 대표 적 으로 배치 합 니 다.
3)그림 에서 파란색 점선 이 초기 화 될 때 호출 되 고 빨간색 점선 이 실 행 될 때 비동기 호출 되 며 빨간색 실선 이 실 행 될 때 동기 화 됩 니 다.
4)그림 에는 RPC 의 층 만 포함 되 어 있 고,Remoting 의 층 은 포함 되 어 있 지 않 으 며,Remoting 은 전체적으로 Protocol 에 포함 되 어 있다.
2.핵심 역할 설명
1)Provider 노출 서비스 제공 자
2)소비자 가 원 격 서 비 스 를 호출 하 는 서비스 소비자(부하 균형)
3)레 지 스 트 리 서비스 등록 및 발 견 된 등록 센터(모니터링,심장 박동,차 기,재 입)
4)Monitor 서비스 소비자 와 공급 자 는 메모리 에 호출 횟수 와 호출 시간 을 누적 하고 주동 적 으로 시간 을 정 하여 매 분 에 한 번 씩 통계 데 이 터 를 모니터링 센터 에 보 냅 니 다.
5)Container 서비스 실행 용기:원 격 호출,직렬 화
2.SpringBoot 2.0 과 통합
1.핵심 의존
<!-- Zookeeper Dubbo -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
2.프로젝트 구조 설명구조 설명
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.dbbo.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)소비자 인터페이스여기 주해 주의 하 세 요.
@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.인터페이스 시간 초과 설정이 설정 은 서비스 제공 자 에 게 설정 할 수도 있 고 서비스 소비 자 에 게 설정 할 수도 있 습 니 다.여기 서 제공 자의 설정 을 보 여 줍 니 다.설명:timeout 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)서비스 제공 자
같은 인터페이스 에서 두 가지 버 전 을 제공 합 니 다.설명:version.
버 전 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)주 해 를 통 해 서로 다른 버 전의 인 터 페 이 스 를 가리 키 며 실 현 됩 니 다.
@Service
public class VersionServiceImpl implements VersionService {
@Reference(version = "1.0.0")
private VersionService versionService1 ;
@Reference(version = "2.0.0")
private VersionService versionService2 ;
@Override
public String getVersion() {
return versionService1.getVersion();
}
public String version2 (){
return versionService2.getVersion() ;
}
}
상기 사례 는 모두 Dubbo 홈 페이지 의 절 차 를 참조 하여 작 성 된 것 으로 Dubbo 의 많은 강력 한 기능 은 홈 페이지 의 한 걸음 한 걸음 설정 을 참고 할 수 있 습 니 다.소스 코드 주소
GitHub :
https://github.com/cicadasmile/middle-ware-parent
:
https://gitee.com/cicadasmile/middle-ware-parent
총결산
위 에서 말 한 것 은 편집장 이 소개 한 SpringBoot 2.0 이 Dubbo 프레임 워 크 를 통합 하여 RPC 서비스 원 격 호출 을 실현 하 는 것 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
만약 당신 이 본문 이 당신 에 게 도움 이 된다 고 생각한다 면,전 재 를 환영 합 니 다.번 거 로 우 시 겠 지만 출처 를 밝 혀 주 십시오.감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.