Service Discovery

Sei Kim·2024년 1월 14일

Spring Cloud

목록 보기
1/4
post-thumbnail

1. Discovery Service


서비스를 구성하는 개별 인스턴스를 찾는 프로세스1)

일종의 전화부 책과 같은 역할을 합니다.

  • Key : 어떠한 서버
  • Value : 서버의 위치

2. Spring Cloud Netflix Eureka


Spring Boot Application 에 대한 통합 환경 구성을 지원하는 서비스 입니다. 2)

3. 예제


실습환경

  • macOS
  • Intellij IDEA
  • Java 17
  • Spring Boot 3.1.7

3.1. Spring Cloud Eureka


유레카 서버를 생성해보도록 하겠습니다.

위 사진과 같이 반드시 필요한 Dependencies 로는 Eureka Server이 있어 추가합니다.

3.1.1. @EnableEurekaServer


@EnableEurekaServer // 해당 어노테이션 추가
@SpringBootApplication
public class DiscoveryServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(DiscoveryServiceApplication.class, args);
    }

}

Spring Eureka를 동작하기 위해서는 "${Project}Application.java" 파일에서 반드시 @EnableEurekaServer를 추가합니다.

3.1.2. yaml config


server:
  port: 8761

eureka:
  client:
    fetch-registry: false
    register-with-eureka: false

다음으로 설정을 지정하도록 합니다.

아래의 두 항목에 대해서 false로 설정하는 이유는 자기 자신을 등록하는 웃긴 상황을 방지하기 위해서 설장하였습니다.
이후 실행시키면 다음과 같이 정상적으로 서버가 동작하는 것을 확인할 수 있습니다.

3.1.3. User Service 생성


이제 유레카 서버에 등록할 새로운 서버를 생성해보도록하겠습니다.

Dependencies

  • Spring Boot Web
  • Lombok
  • Eureka Discovery Client
// UserServiceApplication.java

@EnableDiscoveryClient
@SpringBootApplication
public class UserServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserServiceApplication.class, args);
    }

}

Discovery Client 로 등록하기 위해서 @EnableDiscoveryClient 어노테이션을 추가하였습니다.

server:
  port: 0 # 1)

spring:
  application:
    name: user-service

eureka:
  instance:
    instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}} # 2)
  client:
    fetch-registry: true
    register-with-eureka: true
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka # 3)
  1. server.port 를 0으로 설정하면 사용하지 않는 포트를 랜덤으로 찾아서 서버를 기동합니다.
  2. eureka.instance.instance-id 랜덤 포트를 사용하면 유레카에서 하나의 인스턴스로 밖에 인식을 하기때문에 구별하기 위해 호스트네임, 인스턴스아이디, 랜덤 값을 추가하여 구분할 수 있도록 합니다.
  3. eureka.client.service-url.defaultZone 으로 유레카 서버의 url을 작성합니다.

이후 실행시키면 다음과 같이 정상적으로 동작하는 것을 확인할 수 있습니다.

Ref


  1. [Spring Cloud] Service Discovery - 긍정의고등어
  2. [Spring Cloud] Service Discover Server로 Netflix Eureka 이용하기 - Wonit

0개의 댓글