728x90
반응형
개요
Spring Cloud Eureka는 서비스 디스커버리를 위한 라이브러리입니다. 이를 사용하면 마이크로서비스 아키텍처에서 각 서비스의 위치와 상태를 관리할 수 있습니다.
Spring Cloud Eureka는 서비스 디스커버리 서버와 클라이언트로 구성됩니다. Eureka 서버는 각 서비스의 위치와 상태 정보를 저장하고, Eureka 클라이언트는 자신을 등록하고 주기적으로 서버에 상태를 보고합니다
주요 기능
1. 서비스 등록 및 발견
Eureka 클라이언트는 서비스를 등록하고, Eureka 서버는 등록된 서비스 정보를 저장합니다. 다른 서비스에서는 Eureka 서버에서 서비스 정보를 조회하여 해당 서비스를 호출할 수 있습니다.
2. 서비스 상태 확인
Eureka 클라이언트는 주기적으로 서비스 상태를 Eureka 서버에 보고하며, Eureka 서버는 이 정보를 기반으로 서비스의 상태를 확인할 수 있습니다. 이를 통해 서비스의 가용성을 높일 수 있습니다.
3. 부하 분산
Eureka 서버는 서비스 정보를 여러 개의 서버에 저장하므로, 각 서비스에서는 이 중 하나의 서버를 선택하여 서비스를 호출할 수 있습니다. 이를 통해 부하 분산 기능을 구현할 수 있습니다.
4. 클라이언트 측 로드 밸런싱
Eureka 클라이언트는 서비스 정보를 주기적으로 조회하여 로컬 캐시에 저장합니다. 이를 통해 클라이언트 측에서 로드 밸런싱을 구현할 수 있습니다.
부하분산 및 로드 밸런싱은 "spring-cloud-starter-netflix-eureka-client"를 사용해야 하므로 구현 단계에선 안 보여
구현
eureka server
1.pom.xml 설정
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
...
<properties>
<java.version>11</java.version>
<spring-cloud.version>3.1.5</spring-cloud.version>
</properties>
<dependencies>
<!-- Spring boot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
<!-- Spring boot -->
</dependencies>
...
2. @EnableEurekaServer 어노테이션을 사용하여 Eureka Server를 활성화
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
3. application.yml 설정
server:
port: 8761
spring:
application:
name: eureka-server
eureka:
instance:
hostname: localhost
client:
register-with-eureka: false
fetch-registry: false
eureka client
1. pom.xml 설정
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.8</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
...
<properties>
<java.version>11</java.version>
<spring-cloud.version>3.1.5</spring-cloud.version>
</properties>
<dependencies>
...
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
</dependencies>
2. @EnableDiscoveryClient 어노테이션을 사용하여 Eureka Client를 활성화
@SpringBootApplication
@EnableDiscoveryClient
public class EurekaClientApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaClientApplication.class, args);
}
}
3. application.yml 설정
server:
port: 8081
spring:
application:
name: springBoot01
eureka:
instance:
prefer-ip-address: true
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
나는 spring boot를 2개 띄어서 연결해보았다.
먼저 Eureka 서버 접속 시
정상적으로 2개의 spring boot가 연결되었다.
Eureka의 서비스의 구분값은 application name이라고 알고 있어 springboot02를 yml에서 springboot01로 바꾸어 보았다.
같은 서비스로 2개가 적혀 있는 모습을 볼 수 있다.
만약 eureka로 로드밸런싱을 처리한다면 같은 서비스를 저렇게 여러 개 띄어서 무중단 시스템도 가능 할꺼같다.
Github
https://github.com/victory940209/spring-cloud
GitHub - victory940209/spring-cloud
Contribute to victory940209/spring-cloud development by creating an account on GitHub.
github.com
728x90
반응형
'Spring > Spring Cloud' 카테고리의 다른 글
Spring Cloud Gateway (0) | 2023.03.08 |
---|---|
Spring Cloud Config (0) | 2023.03.08 |
Spring Cloud MSA (0) | 2022.01.25 |