반응형
Eureka 란,
리본은 yml 파일을 통해 서버 목록을 관리하고, 이를 삭제하거나, 추가하기 위해서는 배포 없이 불가능하다.
Netflex 의 Eureka 는 이러한 Dynamic Service Discovery 기능을 제공해준다.
Service Registry
- 서비스 탐색, 등록
- 클라우드의 전화번호부?
- (단점) 침투적 방식 코드 변경
Discovery Client
- spring-cloud에서 서비스 레지스트리 사용 부분을 interface 화
- Eureka, Consul, Zookeeper, etcd 등의 구현체가 존재
리본은 유레카와 결합하여 사용할 수 있으며 서버 목록을 자동으로 관리.
리본은 유레카가 로컬에 저장해 둔 서버 목록을 가져올 수 있고, 서비스를 실제 호출할 때에는, 유레카에 의해 혹은 리본에 설정한 policy에 따라 라운드 로빈으로 서비스를 호출하게 됨
- 서버 시작 시, Eureka Server(Registry)에 자동으로 자신의 상태를 등록 (UP)
> eureka.client.register-with-eureka: true (default) - 주기적 HeartBeat 으로 Eureka Server 에 자신이 살아 있음을 알림
> eureka.instance.lease-renewal-interval-in-seconds: 30 (defualt) - 서버 종료 시 Eureka Server 에 자신의 상태 변경 (Down) 혹은 자신의 목록 삭제
- Eureka 상에 등록된 이름은 'Spring.application.name'
Display (Eureka Client)
dependency
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client') // 3. To use Eureka client
application.yml
eureka:
instance:
prefer-ip-address: true
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka # default address
DisplayApplication.java
@EnableEurekaServer 애노테이션만 추가
@SpringBootApplication
@EnableCircuitBreaker
@EnableEurekaClient
public class DisplayApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.run(DisplayApplication.class);
}
}
Eureka Server
dependency
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-server') // To use Eureka server
application.yml
server:
port: 8761 # Default : 8761
spring:
application:
name: eureka-server
eureka:
server:
response-cache-update-interval-ms: 1000 # Eureka Server's Response Cache. Default 30,000ms
enableSelfPreservation: false # Just for demo
client:
register-with-eureka: false # Only for local stand-alone development
fetch-registry: false # Only for local stand-alone development
service-url:
defaultZone: http://localhost:8761/eureka # Default Value. Just for demo
instance:
prefer-ip-address: true # Use ip address instead of hostname from OS when reporting myself to eureka server
EurekaServerApplication.java
@EnableEurekaServer 애노테이션만 추가해주면 됨
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
접속 url : http://localhost:8761/
반응형
'Spring > Spring Cloud' 카테고리의 다른 글
Zuul - API Gateway (0) | 2021.01.17 |
---|---|
Feign (0) | 2021.01.17 |
Hystrix & Ribbon (0) | 2021.01.17 |