SpringBoot+Spring Cloud Consul 서비스 등록 및 발견 상세 분석


뭐 공부 해요?
Consul 은 HashiCorp 사가 내 놓 은 오픈 소스 도구 로 분포 식 시스템 의 서비스 발견 과 설정 을 실현 하 는 데 사용 된다.다른 분포 식 서비스 등록 과 발견 방안 과 함께 Consul 의 방안 은 더욱'원 스 톱'으로 서비스 등록 과 발견 프레임 워 크,분포 일치 성 협의 실현,건강 검사,Key/Value 저장,다 중 데이터 센터 방안 을 내 장 했 고 다른 도구(예 를 들 어 ZooKeeper 등)에 의존 하지 않 아 도 된다.사용 하기 도 간단 하 다.Consul 은 Go 언어 로 작성 되 었 기 때문에 천연 이식 성(Linux,windows,Mac OS X 지원)이 있 습 니 다.설치 패 키 지 는 실행 가능 한 파일 하나만 포함 되 어 있어 배치 가 편리 하고 Docker 등 경량급 용기 와 빈 틈 없 이 협조 할 수 있 습 니 다.
설치 컨설팅
홈 페이지(consul.io)최신 버 전 1.8.0 은 MacOS,Windows,Linux 를 제공 합 니 다.어떻게 설치 해 야 할 지 모 르 면 공식 적 으로 동 영상 도 제공 합 니 다.

저 는 docker 를 사용 하여 설치 하고 설치 과정 을 요약 하면 세 마디 입 니 다.
docker search consul
docker pull consul
docker run --name consul -d -p 8600:8500 consul
문제 가 없 으 면 본 컴퓨터 방문http://localhost:8600은 consul 자체 관리 시스템 을 열 수 있 습 니 다.기본 적 인 상황 에서 서비스 등록 이 없습니다.
  • 새 아버지 프로젝트 를 준비 합 니 다.주로 SpringCloud,SpringBoot 버 전 번 호 를 약속 합 니 다.저 는 Hoxton.SR1,SpringBoot 2.2
  • 를 사용 합 니 다.
  • 3 개의 키 모듈 을 새로 만 들 었 습 니 다.여 기 는 두 개의 service,하 나 는 consumer,두 개의 service 를 8001 과 8002 포트 로 구분 합 니 다.주로 서비스 소비 시 클 라 이언 트 부하 균형 을 반영 하려 고 합 니 다.
  • 프로젝트 구 조 는 아래 그림 과 같다.

    부모 프로젝트 pom.xml
    
    <dependencyManagement>
     <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-dependencies</artifactId>
     <version>2.2.2.RELEASE</version>
     <type>pom</type>
     <scope>import</scope>
     </dependency>
     <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-dependencies</artifactId>
     <version>Hoxton.SR1</version>
     <type>pom</type>
     <scope>import</scope>
     </dependency>
     </dependencies>
     </dependencyManagement>
    서비스 공급 자
    서비스 등록 센터 가 있 습 니 다.그러면 저 희 는 두 개의 서비스 제공 자 를 개발 하 겠 습 니 다.여 기 는 두 개의 Module,포트 8001 과 8002 를 새로 만 들 었 습 니 다.두 모듈 코드 가 같 습 니 다.주로 부하 사용 을 보 여주 기 위해 서 입 니 다.
    새 모듈,spring-cloud-starter-consul-disconvery 의존 추가

    pom.xml
    
     <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-consul-discovery</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     </dependency>
     </dependencies>
    설정 추가(application.yml)
    
    server:
     port: 8001
    spring:
     application:
     name: consul-student-service
     cloud:
     consul:
     port: 8600
     host: 127.0.0.1
     discovery:
     service-name: ${spring.application.name}
    시작 클래스 수정,서비스 추가
    여기 서 나 는 직접 테스트 인 터 페 이 스 를 써 서 시동 류 에 넣 었 다.여기 서 나 는 포트 8001 의 코드 만 붙 였 는데 8002 코드 의 구조 가 같 지만 포트 가 다르다.
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @RestController
    public class ConsulStudentService8001 {
    
     public static void main(String[] args) {
     SpringApplication.run(ConsulStudentService8001.class,args);
     }
    
     @GetMapping("/student/version")
     public String version(){
     return "8001,202007222300";
     }
    }
    OK,이 단계 에서 두 서 비 스 를 시작 합 니 다.이상 이 없 는 경우 등록 센터 에서 현재 서비스 인 스 턴 스 를 볼 수 있 습 니 다.



    소비자 컨설팅
    서비스 등록 센터 가 있 고 서비스 제공 자 도 있 습 니 다.우 리 는 서비스 소비 자 를 다시 개발 합 니 다.
    새 모듈,spring-cloud-starter-consul-disconvery 의존 도 추가
    pom.xml
    
    <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-consul-discovery</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
     </dependency>
     </dependencies>
    설정 추가(application.yml)
    
    server:
     port: 8080
    
    spring:
     application:
     name: consul-student-consumer
     cloud:
     consul:
     host: 127.0.0.1
     port: 8600
     discovery:
     service-name: ${spring.application.name}
     #       consul 
     register: false
    시작 클래스 수정,서비스 호출
    RestTemplate 설정 클래스 를 개발 하여 REST 인 터 페 이 스 를 호출 할 때 사용 합 니 다.
    
    @Configuration
    public class ApplicationContextConfig {
    
     @Bean
     @LoadBalanced
     public RestTemplate restTemplate(){
     return new RestTemplate();
     }
    }
    시작 클래스 수정
    
    @SpringBootApplication
    @EnableDiscoveryClient
    @RestController
    public class ConsulStudentConsumer {
    
     public static void main(String[] args) {
     SpringApplication.run(ConsulStudentConsumer.class,args);
     }
    
     @Autowired
     RestTemplate restTemplate;
    
     @GetMapping("/consul/student/version")
     public String version(){
     //           REST  
     return restTemplate.getForObject("http://consul-student-service/student/version",String.class);
     }
    }
    
    OK,이 단계 가 완 료 된 후에 소비자 인 터 페 이 스 를 시작 하여 몇 번 갱신 할 수 있 습 니 다.반환 결과 에서 볼 수 있 듯 이 교대 호출 서비스 제공 자 인터페이스 인 스 턴 스 입 니 다.
    스프링 부 트+스프링 클 라 우 드 컨 설 턴 트 서비스 등록 및 발견 에 대한 상세 한 설명 은 여기까지 입 니 다.스프링 부 트 스프링 클 라 우 드 컨 설 턴 트 서비스 등록 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기