넷플릭스 회사 자사 클라우드 기술을 기부한 제품
1. 유레카 서버에 서비스 등록
2. 클라이언트는 로드밸런서 (API Gateway)에 필요한 정보 요청
3. 서비스 디스커버리가 요청한 정보를 찾아준다
유레카는 클라이언트와 서버 두 부분으로 구성 되어 있다.
의존성 추가
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
다른 서비스와 통신할 수 있는 레지스트리 구축
@SpringBootApplication
@EnableEurekaServer
public class DiscoveryserviceApplication {
public static void main(String[] args) {
SpringApplication.run(DiscoveryserviceApplication.class, args);
}
}
application.yml
server:
port: 8761
spring:
application:
name: discoveryservice
eureka:
client:
register-with-eureka: false
fetch-registry: false
의존성 추가
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
@EnableDiscoveryClient는 spring-cloud-commons에 존재하고,
@EnableEurekaClient는 spring-cloud-netflix에 존재하고 유레카만을 위해 작동한다.
@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
}
application.yml
server:
port: 0
spring:
application:
name: user_service
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://127.0.0.1:8761/eureka
.yml파일은 등록에서 더 자세하게 다뤄본다.
여러개 서비스를 등록하면 port 충돌의 위험으로 제대로 작동하지 않는다.
여러 방법을 제시하며 더 나은 해결방법을 찾아낸다
1. .yml파일에서 포트 번호 수정 -> 매번 수정할 수 없음
2. edit configuration 이용
-Dserver.port=9002
3. 터미널에서 포트번호 설정
mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=9003'
포트 번호를 랜덤으로 할당 - 랜덤포트
server:
port: 0
spring:
application:
name: user_service
eureka:
instance:
instance-id: ${spring.cloud.client.hostname}:${spring.application.instance_id:${random.value}}