Service Discovery
- 카테고리 없음
- 2022. 1. 31.
| Service Discovery
- 분산시스템은 서로 다른서버에서 호스팅되는 여러 서비스로 구축되어 서로 커뮤니케이션 한다.
- 각 서비스는 호출대상 서비스의 위치를 알고 있어야 하는데 Auto Scaling과 함께 서비스의 위치도 갱신되어야 한다.
- Spring Cloud Config로 서비스의 위치 정보를 매번 변경해야 한다면 Auto Scaling은 더 이상 장점이 될 수 없다.
- Netflix OSS에서 제공하는 다양한 컴포넌트 중 Eureka는 서비스의 위치를 관리해 준다.
- 하나의 서비스가 여러 개의 인스턴스로 서비스한다면 인스턴스의 위치(IP, PORT)를 알고 있어야 한다
- Auto Scaling되는 PasS 환경에서는 정해진 인스턴스의 위치가 없으므로 호출할 인스턴스도 결정해야 한다
- Netflix OSS와 Service 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 서비스가 등록되면 성공!