Spring Cloud Alibaba 기초 튜 토리 얼: Nacos 를 사용 하여 서비스 등록 과 발견 실현

스프링 클 라 우 드 알 리 바 바 가 첫 릴 리 스 를 발표 한 이래 국내 개발 자 들 의 높 은 관심 을 받 고 있다.Spring Cloud Alibaba 는 아직 Spring Cloud 의 메 인 버 전 관리 에 포함 되 지 않 았 지만 아 리 미들웨어 팀 의 배경 으로 많은 팀 의 지 지 를 받 았 다.또한 Spring Cloud Alibaba 의 몇 가지 주요 기능 은 넷 플 릭 스 OSS 의 중요 한 구성 요 소 를 가리 키 기 때문에 후 자 는 최근 에 각 구성 요소 가 새로운 기능 을 업데이트 하지 않 는 다 고 자주 발표 하기 때문에 Spring Cloud Alibaba 의 관심 도가 계속 높 아 지고 많은 개발 자 나 팀 도 작은 범위 에서 물 을 시험 하기 시작 했다.필 자 는 이에 대해 서도 한동안 조사 연구 와 시 수 를 실시 한 다음 에 을 주제 로 빠 른 입문 무료 콘 텐 츠 를 완성 하여 개원 지역사회 의 발전 을 지원 할 계획 입 니 다! ^ ^
더 많은 Spring Cloud Alibaba 에 대한 소 개 를 통 해 알 수 있 듯 이 은 중국 실정 에 더욱 부합 되 는 마이크로 서비스 체 계 를 구축한다.
나 코스 가 뭐야?
Nacos 는 마이크로 서 비 스 를 발견 하고 설정 하 며 관리 하 는 데 도움 을 줍 니 다.Nacos 는 간단 하고 사용 하기 쉬 운 특성 집합 을 제공 하여 동적 서비스 발견, 서비스 설정, 서비스 메타 데이터 와 데이터 관 리 를 신속하게 실현 하도록 도와 줍 니 다.Nacos 는 귀하 가 더욱 민첩 하고 쉽게 마이크로 서비스 플랫폼 을 구축 하고 납품 하 며 관리 하 는 데 도움 을 줍 니 다.Nacos 는 '서비스' 중심의 현대 응용 구조 (예 를 들 어 마이크로 서비스 패 러 다 임, 클 라 우 드 네 이 티 브 패 러 다 임) 를 구축 하 는 서비스 인 프 라 시설 이다.
다음 튜 토리 얼 에 서 는 Nacos 를 마이크로 서비스 구조 에 있 는 등록 센터 (대체: eurekba, consul 등 전통 방안) 와 배치 센터 (spring cloud config) 로 사용 합 니 다.
Nacos 설치
다운로드 주소:https://github.com/alibaba/na...본문 버 전: 0.7.0
다운로드 가 완료 되면 압축 을 풀 수 있 습 니 다.서로 다른 플랫폼 에 따라 서로 다른 명령 을 실행 하고 단기 판 Nacos 서 비 스 를 시작 합 니 다.
  • Linux/Unix/Mac: sh startup.sh -m standalone
  • Windows: cmd startup.cmd -m standalone
  • startup.sh 스 크 립 트 는 Nacos 가 압축 을 푼 빈 디 렉 터 리 에 있 습 니 다.스프링 클 라 우 드 와 Nacos 의 통합 사용 을 소개 하고 Nacos 의 고급 설정 에 대해 추 후 보충 합 니 다.그 러 니 제 블 로그 나 공중 번 호 를 계속 지 켜 보 세 요!
    시작 완료 후 방문: http://127.0.0.1:8848/nacos/ Nacos 의 서비스 관리 페이지 에 들 어 갈 수 있 습 니 다. 구체 적 으로 다음 과 같 습 니 다.
    응용 프로그램 접속 Nacos 등록 센터 구축
    Nacos 서비스의 설치 와 시작 을 마 친 후에 우 리 는 두 개의 응용 프로그램 (서비스 제공 자 와 서비스 소비자) 을 작성 하여 서비스의 등록 과 발견 을 검증 할 수 있 습 니 다.
    서비스 공급 자
    첫 번 째 단계: Spring Boot 애플 리 케 이 션 을 만 듭 니 다. 이름 은: alibaba-nacos-discovery-server 입 니 다.스프링 부 트 애플 리 케 이 션 을 아직 모 르 거나 모 르 신다 면 스프링 부 트 기초 튜 토리 얼 을 먼저 배 우 는 것 을 권장 합 니 다.
    두 번 째 단계: 편집 pom.xml, 필요 한 의존 설정 을 추가 합 니 다. 예 를 들 어:
    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.5.RELEASE
         
    
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Finchley.SR1
                pom
                import
            
            
                org.springframework.cloud
                spring-cloud-alibaba-dependencies
                0.2.1.RELEASE
                pom
                import
            
        
    
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        
        
            org.projectlombok
            lombok
            1.18.2
            true
        
    

    상술 한 내용 은 주로 세 부분 이다.
  • parent: spring boot 의 버 전 을 정의 합 니 다
  • dependencyManagement: spring cloud 버 전 및 spring cloud alibaba 버 전 은 spring cloud alibaba 가 아직 spring cloud 의 메 인 버 전 관리 에 포함 되 지 않 았 기 때문에 스스로 가입 해 야 합 니 다
  • dependencies: 현재 응용 에서 사용 할 의존 내용.여 기 는 주로 Nacos 의 서비스 등록 과 발견 모듈 을 새로 추 가 했 습 니 다. spring-cloud-starter-alibaba-nacos-discoverydependencyManagement 에 이미 버 전이 도입 되 었 기 때문에 구체 적 인 버 전 을 지정 할 필요 가 없다.

  • 세 번 째 단계: 주 클래스 를 만 들 고 HTTP 인 터 페 이 스 를 실현 합 니 다.
    @EnableDiscoveryClient
    @SpringBootApplication
    public class TestApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestApplication.class, args);
        }
    
        @Slf4j
        @RestController
        static class TestController {
            @GetMapping("/hello")
            public String hello(@RequestParam String name) {
                log.info("invoked name = " + name);
                return "hello " + name;
            }
        }
    }

    내용 이 매우 간단 합 니 다. @SpringBootApplication 정 의 는 Spring Boot 응용 입 니 다.@EnableDiscoveryClient Spring Cloud 를 여 는 서비스 등록 과 발견 은 여기에 spring-cloud-starter-alibaba-nacos-discovery 모듈 이 도입 되 었 기 때문에 Spring Cloud Common 에서 정의 하 는 서비스 관리 와 관련 된 인 터 페 이 스 는 Nacos 의 실현 을 사용 할 것 이다.이 점 은 우리 가 Eureka, Consul 을 사용 하 든 다른 Spring Cloud 통합 의 등록 센터 를 사용 하 든 마찬가지 입 니 다. 이것 은 Spring Cloud 가 패 키 징 을 한 장점 이기 도 합 니 다. 만약 에 Eureka, Consul 등 등록 센터 의 통합 에 익숙 하지 않 으 면 예전 의 이 편 을 볼 수 있 습 니 다. Spring Cloud 구축 마이크로 서비스 구조: 서비스 등록 과 발견 (Eureka, Consul).
    네 번 째 단계: 서비스 이름과 Nacos 주 소 를 설정 합 니 다.
    spring.application.name=alibaba-nacos-discovery-server
    server.port=8001
    
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

    다섯 번 째 단계: 위 에서 만 든 응용 프로그램 을 시작 합 니 다.시작 할 때 -Dserver.port=8001 형식 을 추가 하여 이 컴퓨터 의 서로 다른 포트 에서 여러 개의 인 스 턴 스 를 시작 할 수 있 습 니 다.
    응용 프로그램 이 시 작 된 후에 우 리 는 콘 솔 이나 로그 에서 다음 과 같은 내용 을 볼 수 있 습 니 다. 등록 이 성공 한 것 을 의미 합 니 다.
    INFO 10476 --- [           main] o.s.c.a.n.registry.NacosServiceRegistry  : nacos registry, alibaba-nacos-discovery-server 10.123.18.216:8001 register finished

    도 ok 을 시작 한 후에 저 희 는 Nacos 의 관리 페이지 를 방문 할 수 있 습 니 다.http://127.0.0.1:8848/nacos/서비스 목록 을 보 려 면 다음 과 같은 내용 을 볼 수 있 습 니 다.
    현재 등 록 된 모든 서비스 와 모든 서비스의 클 러 스 터 수, 인 스 턴 스 수, 건강 인 스 턴 스 수 를 표시 합 니 다.상세 한 정 보 를 클릭 하면 우 리 는 모든 서비스의 구체 적 인 사례 정 보 를 볼 수 있 습 니 다. 다음 그림 과 같 습 니 다.
    서비스 소비자
    다음은 Nacos 에 등 록 된 서 비 스 를 소비 하 는 애플 리 케 이 션 을 실현 한다.
    첫 번 째 단계: Spring Boot 응용 프로그램 을 만 듭 니 다. 이름 은: alibaba-nacos-discovery-client-common 입 니 다.
    두 번 째 단계: pom. xml 의 의존 내용 을 편집 하고 상기 서비스 제공 자 와 같 으 면 됩 니 다.
    세 번 째 단계: 응용 주 클래스 를 만 들 고 HTTP 인 터 페 이 스 를 실현 하 며 이 인터페이스 에서 서비스 제공 자의 인 터 페 이 스 를 호출 합 니 다.
    @EnableDiscoveryClient
    @SpringBootApplication
    public class TestApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(TestApplication.class, args);
        }
    
        @Slf4j
        @RestController
        static class TestController {
    
            @Autowired
            LoadBalancerClient loadBalancerClient;
    
            @GetMapping("/test")
            public String test() {
                //   spring cloud common                      
                ServiceInstance serviceInstance = loadBalancerClient.choose("alibaba-nacos-discovery-server");
                String url = serviceInstance.getUri() + "/hello?name=" + "didi";
                RestTemplate restTemplate = new RestTemplate();
                String result = restTemplate.getForObject(url, String.class);
                return "Invoke : " + url + ", return : " + result;
            }
        }
    }

    여 기 는 Spring Cloud Common 의 LoadBalancerClient 인 터 페 이 스 를 사용 하여 서비스 인 스 턴 스 정 보 를 선택 합 니 다.그리고 선택 한 인 스 턴 스 정보 에서 접근 가능 한 URI 를 가 져 와 서비스 제공 자의 인터페이스 규칙 을 연결 하여 호출 합 니 다.
    네 번 째 단계: 서비스 이름과 Nacos 주 소 를 설정 하여 서비스 소비자 들 이 위 에 Nacos 에 등 록 된 서 비 스 를 발견 할 수 있 도록 합 니 다.
    spring.application.name=alibaba-nacos-discovery-client-common
    server.port=9000
    
    spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

    다섯 번 째 단계: 서비스 소비 자 를 시작 한 다음 에 curl 또는 postman 등 도 구 를 통 해 방문 합 니 다. 다음은 curl 을 예 로 들 면:
    $ curl localhost:9000/test
    Invoke : http://10.123.18.216:8001/hello?name=didi, return : hello didi
    $ curl localhost:9000/test
    Invoke : http://10.123.18.216:8002/hello?name=didi, return : hello didi

    두 번 의 서로 다른 요 구 를 할 때 실제 호출 된 서비스 제공 자의 인 스 턴 스 가 다르다 는 것 을 알 수 있다. 즉, LoadBalancerClient 인 터 페 이 스 를 통 해 서비스 인 스 턴 스 를 얻 을 때 서비스 제공 자 인 스 턴 스 에 대한 부하 균형 을 실현 한 것 이다.그러나 이러한 실현 은 비교적 번 거 로 운 것 이 분명 하 다. 다음 몇 편 을 예고 하고 서비스 소비 에 관 한 몇 가지 다른 자 세 를 취한 다.
    참고 자료
  • Nacos 공식 문서
  • Nacos 소스 코드 분석
  • 코드 예제
    본 고 는 독자 들 이 아래 창고 의 alibaba-nacos-discovery-server 항목 과 alibaba-nacos-discovery-client-common 항목 을 살 펴 볼 수 있다.
  • Github
  • Gitee

  • 관심 이 있 으 시 면 star, follow, 소장, 리 트 윗 을 환영 합 니 다!
    다음 주제 강좌 에 관심 이 있 으 실 수도 있 습 니 다.
  • Spring Boot 기초 튜 토리 얼
  • Spring Cloud 기초 강좌
  • 좋은 웹페이지 즐겨찾기