Service Registry
- 서비스 탐색, 등록
클라우드의 전화번호부
- 코드를 변경해야하는 단점이 존재
Discovery Client
- spring-cloud에서 서비스 레지스트리 사용 부분을 추상화 (interface화)
- Eureka, Consul, Zookeeper, etcd 등의 구현체가 존재
- 서버 시작 시 Eureka Server(Registry)에 자신의 상태를 등록
(UP)
eureka.client.register-with-eureka: true
- 주기적으로 Eureka Server에 자신이 살아있음을 알림
eureka.instance.lease-renewal-interval-in-seconds: 30
- 서버 종료 시 Eureka Server에 자신의 상태를 변경
(DOWN)
혹은 삭제 - Eureka 상에 등록된 이름은
spring.application.name
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server')
@EnableEurekaServer
@SpringBootApplication
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServiceApplication.class);
}
}
호출의 대상이 되는 것
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
@EnableEurekaClient // 조금 더 추상적으로 선언하고 싶다면 @EnableDiscoveryClient를 사용해도 무관하다.
@EnableCircuitBreaker
@SpringBootApplication
public class HomeApplication {
public static void main(String[] args) {
SpringApplication.run(HomeApplication.class);
}
}
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka
서버 주소는 Eureka Server에서 가져온다.
# HomeApplication의 yml
external:
ribbon:
# listOfServers: localhost:8081, localhost:9999
MaxAutoRetries: 0
MaxAutoRetriesNextServer: 1