Spring Cloud: Discovery Service with Netflix Eureka - Server

2019. 11. 12. 22:29Spring Micro Services/Service Discovery with Eureka

반응형

Spring Discovery Service with Netflix Eureka 

 

Eureka Server를 통하여 앞에서 만든 주문서비스를 등록하고 Eureka Client를 이용하여서 API를 호출 하는 방법에 대해 알아보도록 하겠다.

 

프로젝트 소스는 https://github.com/roopy1210/spring-msa-with-eureka 참고 하여 주시기바랍니다.

 

 

프로젝트준비


프로젝트는 앞에서 만든 방법으로 메이븐 모듈 프로젝트를 생성한다.

 

1. 부모 메이븐 프로젝트 생성

2. Eureka Server 프로젝트 생성

2. 주문서비스 프로젝트 생성

3. 결제서비스 프로젝트 생성

4. 상품서비스 프로젝트 생성

 

 

[프로젝트구조]

 

 

앞선 RestTemplate 프로젝트와 틀린점은 URL로 호출 하는 것이 아니라 Eureka Sever에 서비스를 등록하고 서비스 명을 통하여서 각 API를 호출하게 된다.

 

 

 

[Interaction Diagram]

 

 

Eureka Server


01. Eureka Server 메인 어플리케이션 작성

 

Eureka Server는 위의 그림에서 보듯이 주문서비스, 결제서비스, 상품서비스가 등록이 된다.

아래 소스를 보면 @EnableEurekaServer 어노테이션이 선언된 것 을 볼수 있다. 서비스 등록을 위해서는 이 어노테이션을 사용해주어야 한다.

package com.roopy.services.discovery;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryApplication {
	
	public static void main(String[] args) {
		SpringApplication.run(DiscoveryApplication.class, args);
	}
	
}

 

02. application.yml 작성

 

서버설정을 위한 설정 파일을 작성한다.

server:
  port: ${PORT:8761}                
 
eureka:
  client:
    registerWithEureka: false       
    fetchRegistry: false
  server:
    waitTimeInMsWhenSyncEmpty: 0    

 

- eureka.client.registerWithEureka : eureka는 서버이면서 클라이언트가 될 수 있기 때문에 자기자신 서비스 등록여부

- eureka.cleint.fetchRegistry: 서비스 리스트 정보를 local 캐싱 여부

 
테스트

 


 

메인 어플리케이션 실행 후 http://localhost:8761 주소로 브라우저에서 접속한다.

정상적으로 실행 되면 아래와 같은 그림을 볼 수 있을 것이다.

 

 

그림에서 Instances currently registered with Eureka 부분은 현재 서비스중인 클라이언트가 없기 때문에 서비스 목록이 보이지 않는 것이다. 

 

앞으로 만들 주문,결제,상품 서비스가 실행이 되면 위의 부분에 등록이 되는 것을 확인 할 수 있을 것이다.

 

 

 

반응형