Spring Boot 2.x 기본 사례:Dubbo 2.7.3+Nacos 1.1.3 통합(최신 판)
본 고 는 Spring Boot 2.x 버 전 을 바탕 으로 Nacos 를 설정 과 등록 센터 로 하여 Dubbo 서비스의 등록 과 소 비 를 실현 하 는 방법 을 소개 할 것 이다.
구성 요소 통합 버 전 설명:
Spring Boot 2.1.9
Dubbo 2.7.3
Nacos 1.1.3
본문의 하 이 라이트:
소스 코드 설치 Github:https://github.com/raysonfang/spring-boot-demo-all
이전 회 사 는 Dubbo 2.6.1 을 사용 할 때 Zookeeper 를 등록 센터 로 사용 했다.그 당시 에 도 등록 센터 로 만 사용 되 었 을 뿐 전문 적 인 관리 배경 없 이 시각 화 관리 작업 을 했 고 다른 하 나 는 기능 이 단일 하여 등록 센터 로 만 사용 되 었 다.
한 동안 의 학습 과 이 해 를 통 해 알 리 개원 의 Nacos 를 등록 센터 와 외부 배치 센터 로 사용 한 것 을 발견 했다.이것 은 Zookeeper 보다 서비스의 등록 과 배치 에 더욱 적합 하 다.왜냐하면 큰 공장 의 개원 이기 때문에 대량의 실천 을 거 쳤 다.
Nacos 가 무엇 인지,어떤 주요 기능 과 구조 디자인 사상 을 가지 고 있 는 지 잘 모 르 면.스스로 시간 을 내 서 자 료 를 찾 아 보 세 요.
Nacos:
주:
Nacos , Nacos 。
2.기초 구조 구축idea+maven 다 중 모듈 로 프로젝트 구축
spring-boot-dubbo-nacos-demo:부모 프로젝트
shop-service-provider:dubbo 서비스 제공 자
shop-service-consumer:dubbo 서비스 소비자,웹 공학 입 니 다.
3.pom.xml 설명
spring-boot-dubbo-nacos-demo:부모 프로젝트 의 pom.xml
4.0.0
cn.raysonblog
misco-dubbo
0.0.1-SNAPSHOT
misco-dubbo
pom
Demo project for Spring Boot Dubbo Nacos
shop-service-provider
shop-service-consumer
1.8
2.1.9.RELEASE
2.7.3
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.apache.dubbo
dubbo-dependencies-bom
${dubbo.version}
pom
import
org.apache.dubbo
dubbo-spring-boot-starter
${dubbo.version}
org.apache.dubbo
dubbo
${dubbo.version}
org.springframework
spring
javax.servlet
servlet-api
log4j
log4j
apache.snapshots.https
Apache Development Snapshot Repository
https://repository.apache.org/content/repositories/snapshots
false
true
org.springframework.boot
spring-boot-maven-plugin
shop-service-provider:pom.xml 도입 dubbo 와 nacos 관련 jar
4.0.0
cn.raysonblog
misco-dubbo
0.0.1-SNAPSHOT
../pom.xml
cn.raysonblog
shop-service-provider
0.0.1-SNAPSHOT
shop-service-provider
Demo project for Spring Boot dubbo nacos
1.8
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.apache.dubbo
dubbo-spring-boot-starter
org.apache.dubbo
dubbo
org.apache.dubbo
dubbo-registry-nacos
2.7.3
com.alibaba.nacos
nacos-client
apache.snapshots.https
Apache Development Snapshot Repository
https://repository.apache.org/content/repositories/snapshots
false
true
org.springframework.boot
spring-boot-maven-plugin
shop-service-consumer: pom.xml
4.0.0
cn.raysonblog
misco-dubbo
0.0.1-SNAPSHOT
../pom.xml
cn.raysonblog
shop-service-consumer
0.0.1-SNAPSHOT
shop-service-consumer
Demo project for Spring Boot dubbo nacos
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
org.springframework.boot
spring-boot-starter-log4j2
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.apache.dubbo
dubbo-spring-boot-starter
org.apache.dubbo
dubbo
org.apache.dubbo
dubbo-registry-nacos
2.7.3
com.alibaba.nacos
nacos-spring-context
com.alibaba.nacos
nacos-client
cn.raysonblog
shop-service-provider
0.0.1-SNAPSHOT
apache.snapshots.https
Apache Development Snapshot Repository
https://repository.apache.org/content/repositories/snapshots
false
true
org.springframework.boot
spring-boot-maven-plugin
4.프로필 설명
인터넷 의 대부분 자 료 는 application.properties 설정 을 바탕 으로 하거나 xml 기반 dubbo 설정 과 관련 된 매개 변수 입 니 다.실제로 Spring Boot 프로젝트 에서 shop-service-provider:application.yml 프로필 설명
spring:
application:
name: shop-service-provider
# log config
logging:
config: classpath:log4j2.xml
level:
root: info
web: info
file: logs/shop-service-provider.log
# Dubbo Application nacos
## The default value of dubbo.application.name is ${spring.application.name}
## dubbo.application.name=${spring.application.name}
nacos:
service-address: 127.0.0.1
port: 8848
dubbo:
registry:
address: nacos://${nacos.service-address}:${nacos.port}
protocol:
name: dubbo
port: 20881
scan:
base-packages: cn.raysonblog.*.service.impl
shop-service-consumer:application.yml 설명
server:
address:
port: 8081
servlet:
context-path: /
tomcat:
uri-encoding: UTF-8
spring:
application:
name: shop-service-consumer
# log config
logging:
config: classpath:log4j2.xml
level:
root: info
web: info
file: logs/shop-service-provider.log
# Dubbo Application nacos
## The default value of dubbo.application.name is ${spring.application.name}
## dubbo.application.name=${spring.application.name}
nacos:
service-address: 127.0.0.1
port: 8848
dubbo:
registry:
address: nacos://${nacos.service-address}:${nacos.port}
dubbo 관련 매개 변수:
DubboConfigurationProperties
클래스 에서 도 볼 수 있 습 니 다.5.업무 코드 작성
shop-service-provider:코드 구현
dubbo 서비스 제공 자 에 대해 저 는
RpcShopService
인 터 페 이 스 를 하나의 서브 모듈 에 단독으로 제공 하지 않 았 습 니 다.실제 프로젝트 에 인용 하면 인터페이스 패 키 지 를 따로 제공 할 수 있 고 소비 단 에서 인터페이스 패 키 지 를 직접 인용 하면 서비스 제공 자 에서 벗 어 날 수 있 습 니 다.ShopServiceProviderApplication.java
주 클래스 시작package cn.raysonblog.shopserviceprovider;
import org.apache.dubbo.config.spring.context.annotation.DubboConfigConfiguration;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import java.util.concurrent.CountDownLatch;
/**
* dubbo
* @author raysonfang
* @ Java (ID:raysonfang)
*/
@SpringBootApplication
@EnableDubbo
public class ShopServiceProviderApplication {
// jar
private static CountDownLatch countDownLatch = new CountDownLatch(1);
public static void main(String[] args) throws InterruptedException{
SpringApplication.run(ShopServiceProviderApplication.class, args).registerShutdownHook();
countDownLatch.await();
}
}
주의
@EnableDubbo
이 주 해 는 Dubbo 서 비 스 를 시작 하 는 데 필요 한 것 입 니 다.RpcShopService.java
:노출 인터페이스,소비 자 를 위 한 사용package cn.raysonblog.shopserviceprovider.service;
/**
* Rpc
* @author raysonfang
*/
public interface RpcShopService {
String sayHello(String name);
}
ShopServiceImpl.java
:실현 류package cn.raysonblog.shopserviceprovider.service.impl;
import cn.raysonblog.shopserviceprovider.service.RpcShopService;
import org.apache.dubbo.config.annotation.Service;
/**
*
*
* ## @Service dubbo ,
* ,
*
* @author raysonfang
*/
@Service
public class ShopServiceImpl implements RpcShopService {
public String sayHello(String name) {
return name;
}
}
shop-service-consumer:코드 구현
package cn.raysonblog.shopserviceconsumer;
import cn.raysonblog.shopserviceprovider.service.RpcShopService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
/**
*
* controller , 。
*
* @author raysonfang
*/
@SpringBootApplication
@RestController
public class ShopServiceConsumerApplication {
@Reference
RpcShopService shopService;
@RequestMapping(name = "/sayHello", method = RequestMethod.GET)
public String sayHello(){
return shopService.sayHello("Hello Dubbo Nacos! , , :Java (ID:raysonfang)");
}
public static void main(String[] args) {
SpringApplication.run(ShopServiceConsumerApplication.class, args);
}
}
6.테스트
테스트 할 때 시작 순서
6.1,nacos-server 등록 센터 시작
나 코스 서버 다운로드:https://github.com/alibaba/nacos/releases
nacos-server 압축 풀기,bin 디 렉 터 리 찾기
windows startup.cmd 를 누 르 면 nacos 를 시작 합 니 다.
브 라 우 저 에:
http://localhost:8848/nacos/index.html
를 입력 하면 nacos 콘 솔 에 접근 할 수 있 습 니 다.사용자 이름과 비밀 번 호 는 기본적으로nacos
6.2 shop-service-provider 서비스 제공 자 시작nacos 콘 솔 에서 정 보 를 볼 수 있 습 니 다:
6.3.shop-service-consumer 서비스 소비자 시작
nacos 콘 솔 에서 다음 과 같은 정 보 를 볼 수 있 습 니 다.
브 라 우 저 에 입력:http://localhost:8081/sayHello결 과 를 되 돌려 줍 니 다.
7.문제 기록 및 해결
7.1.통합 할 때 pom 은 dubbo 와 nacos 관련 의존 가방 을 도입 하 는 데 시간 이 많이 걸린다.주로 가방 도입 이 성공 하지 못 했다.
해결:Maven 의 로 컬 의존 라 이브 러 리 에 가서 성공 하지 못 한 의존 패 키 지 를 삭제 하고 다시 reimport 합 니 다.
7.2.dubbo 를 열 때 주해 인용 이 정확 하지 않 습 니 다.오류 주입
@EnableDubboConfig
.해결:사용 으로 바 꾸 기
@EnableDubbo
.7.3.yml 은 Dubbo 의 관련 속성 을 설정 하고 인터넷 자료 가 매우 적다.
해결:
DubboConfigurationProperties.java
소스 코드 를 보고 속성 설정 을 분석 합 니 다.8.후기
능력 에 한계 가 있 기 때문에 잘못 이나 부당 한 점 이 있 으 면 비판 하고 지적 하 며 함께 교 류 를 배 워 야 합 니 다!
소스 코드 설치 Github:https://github.com/raysonfang/spring-boot-demo-all
환영 합 니 다 스타,비판
저 는 평소에 공부 하고 인 코딩 도 github 에 놓 습 니 다.지속 적 인 관심 과 교 류 를 환영 합 니 다.나의 github:https://github.com/raysonfang
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
GoLang HTTP 서버를 도커화하고 Kubernetes에 배포이 블로그에서는 Kubernetes에서 GoLang으로 작성된 간단한 HTTP 서버를 호스팅하려고 했습니다. 도커 이미지를 빌드하고 도커 허브에 푸시합니다. Minikube에서 원하는 Pod를 생성하여 이미지를 배포...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.