Service Discovery

| Service Discovery

  • 분산시스템은 서로 다른서버에서 호스팅되는 여러 서비스로 구축되어 서로 커뮤니케이션 한다.
  • 각 서비스는 호출대상 서비스의 위치를 알고 있어야 하는데 Auto Scaling과 함께 서비스의 위치도 갱신되어야 한다.
  • Spring Cloud Config로 서비스의 위치 정보를 매번 변경해야 한다면 Auto Scaling은 더 이상 장점이 될 수 없다.
  • Netflix OSS에서 제공하는 다양한 컴포넌트 중 Eureka는 서비스의 위치를 관리해 준다.
  • 하나의 서비스가 여러 개의 인스턴스로 서비스한다면 인스턴스의 위치(IP, PORT)를 알고 있어야 한다
  • Auto Scaling되는 PasS 환경에서는 정해진 인스턴스의 위치가 없으므로 호출할 인스턴스도 결정해야 한다
  • Netflix OSSService Discovery는 이런 문제를 해결하는 컴포넌트이다.
  • Eureka는 마이크로서비스를 이름과 인스턴스의 위치(IP, PORT)의 쌍으로 관리한다

 

| Eureka 서버 생성

package io.namoosori.eureka;

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

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApp {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApp.class, args);
    }
}
server:
  port: 8761

spring:
  application:
    name: eureka-server

eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
  • 서버이지만 클라이언트 역할을 할 수 도 있다. 즉, 기본값은 true이다.

 

| Auction User 생성

spring:
  application:
    name: auction-user

server:
  port: 9001

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka
package io.namoosori.auction.user;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

 

실행결과

Eureka에 Auction-user 서비스가 등록되면 성공!

Designed by JB FACTORY