Eureka Server를 사용하는 이유
마이크로 서비스가 다른 마이크로 서비스를 호출하려면 대상의 IP, Port를 알아야한다.
하지만, random IP, Port일 경우 마이크로 서비스의 정보를 알기가 쉽지 않기 때문에, 각 마이크로 서비스의 IP, Port 정보를 저장하고 검색해주는 Discovery Service(Eureka Service)가 필요하다.
Eureka Server 사용법
1. Dependency 추가 (gradle)
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
2. @EnableEurekaServer를 이용해서 eurekaServer로 등록한다.
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryServiceApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryServiceApplication.class, args);
}
}
3. application.yml 파일 설정
#실행 포트 지정
server:
port: 8761
#micro service의 id를 discovery-server로 지정
spring:
application:
name: discovery-Server
#Eureka Server인데 Client 설정을 하는 이유:
#유레카 라이브러리가 포함돼있으면 스프링 실행 시 유레카 클라이언트의 역할로써 등록되기 때문에
#그렇기 때문에 서버이지만 클라이언트로 설정 정보를 관리할 수 있다.
eureka:
client:
register-with-eureka: false #유레카 레지스트리에 자기 자신을 등록하지 않겠다.
fetch-registry: false #레지스트리의 정보를 가저오지 않겠다.
4. 실행 결과
Spring Cloud Gateway란 ?
spring cloud gateway는 API Gateway 역할을 하는데, MSA에서 API Gateway가 없다면 클라이언트가 각각의 마이크로 서비스의 IP, Port 정보를 모두 알고있어야한다. 이 마저도 랜덤으로 IP. Port가 할당되는 상황에서는 찾을 수가 없다.
그렇기 때문에 gateway는 이용해서 각각의 서비스에 맞게 요청을 전달해주는 역할을 한다.
또한 게이트웨이는 각 마이크로 서비스의 앞단에 존재하기 때문에 리버스 프록시(클라이언트의 요청을 받고 적절한 서비스로 라우팅),
인증 및 권한 부여, 로드밸런싱 등의 역할도 한다.
Eureka Server에서의 Spring Cloud Gateway 사용법
1. Dependency 추가 (gradle)
implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
2. application.yml 파일 설정 (gateway에 등록할 서비스 정보를 등록)
server:
port: 8000
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://localhost:8761/eureka #등록할 eureka server url
spring:
application:
name: api-gateway-service
cloud:
gateway:
routes:
- id: MY-FIRST-SERVICE #해당 라우터의 고유 식별자
uri: lb://MY-FIRST-SERVICE #해당 라우터의 주소
predicates: #라우터의 조건 작성 /first-service/**로 시작하는 경우 해당 라우터로 요청 전송
- Path=/first-service/**
- id: MY-SECOND-SERVICE
uri: lb://MY-SECOND-SERVICE
predicates:
- Path=/second-service/**
'개발 > Spring' 카테고리의 다른 글
[JSP] Cookie와 Session (0) | 2023.04.18 |
---|---|
REST Docs와 Swagger ui (0) | 2023.04.11 |
Java MVC 패턴을 이용한 간단한 미니 쿠팡 만들기 (0) | 2023.04.04 |
DAO, DTO, VO (0) | 2023.03.16 |
Spring WebFlux로 Chatting service 만들기 (0) | 2023.02.27 |