Spring Boot 2.x 기본 사례:Dubbo 2.7.3+Nacos 1.1.3 통합(최신 판)

1.개술
본 고 는 Spring Boot 2.x 버 전 을 바탕 으로 Nacos 를 설정 과 등록 센터 로 하여 Dubbo 서비스의 등록 과 소 비 를 실현 하 는 방법 을 소개 할 것 이다.
구성 요소 통합 버 전 설명:
  • Spring Boot 2.1.9
  • Dubbo 2.7.3
  • Nacos 1.1.3

  • 본문의 하 이 라이트:
  • 1.yml 방식 으로 dubbo 설정 을 합 니 다.
  • 2.관련 구성 요 소 는 비교적 새로운 버 전 으로 통합 된다.
  • 3.관련 소스 코드 를 Github 에 두 면 언제든지 볼 수 있 습 니 다.

  • 소스 코드 설치 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 콘 솔 에 접근 할 수 있 습 니 다.사용자 이름과 비밀 번 호 는 기본적으로nacos6.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

    좋은 웹페이지 즐겨찾기