| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- DTO Projection
- BOJ
- 백준
- android studio
- EC2
- clean architecture
- 컨텍스트 맵
- JPA
- 공통 언어
- 이벤트 기반
- Ubiquitous Language
- Domain-Driven
- 클린 아키텍처
- Hexagonal Architecture
- rabbitmq
- spring boot
- Rabbit MQ
- Spring
- Context map
- Domain Driven
- kafka
- subdomain
- 헥사고날
- hexagonal
- Spring Cloud
- Thymeleaf
- Apache Kafka
- 안드로이드 스튜디오
- 헥사고날 아키텍처
- event
Archives
- Today
- Total
취미겸생업
[Spring boot] Spring Cloud 로드밸런싱 본문
로드밸런싱
로드 밸런싱이란
- 네트워크 트래픽을 여러 서버로 분산, 특정 서버에 부하가 집중되는 것을 방지해 안정성 및 성능 향상
- 클라이언트 사이드 로드 밸런싱
- 클라이언트가 서버 목록을 갖고, 하나를 선택해 요청하여 로드밸런싱
FeignClient
서비스 간 통신은 RetTemplate, RestClient 등을 사용할 수 있지만, @FeignClient는 인터페이스를 통해 선언적으로 별도의 복잡한 설정 없이 서비스와 통신할 수 있다.
연동
- Eureka와 같은 서비스 디스커버리와 연동되어 동적으로 서비스 인스턴스 조회
- Spring Cloud Loadbalancer와 연동되어 있기 때문에 로드밸런싱 또한 자동으로 수행
build.gradle
dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' }FeignClientConfig.java
@Configuration @EnableFeignClints public class FeignClientConfig {}MyServiceClient.java
@FeignClient(name = "my-service") public interface MyServiceClient { @GetMapping("/api/data") // http://my-service/api/data String getData(); }
Ribbon
SCG(Spring Cloud Gateway)에 WebFlux 기반의 SCL(Spring Cloud LoadBalancer)가 포함되어 있기 때문에 Ribbon은 현재는 쓰이지 않으나 소개를 위해 작성
넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로, 마이크로서비스 아키텍처에서 서비스 인스턴스 간의 부하를 분산
다양한 로드 밸런싱 알고리즘을 지원하며, Eureka와 같은 서비스 디스커버리와 연동하여 사용
주요 특징
- 서버 리스트 제공자: Eureka 등으로부터 서비스 인스턴스 리스트를 제공받아 로드 밸런싱에 사용
- 로드 밸런싱 알고리즘: 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱 알고리즘 지원
- Failover: 요청 실패 시 다른 인스턴스로 자동 전환
application.yml
my-service: ribbon: eureka: enabled: true
SCL (Spring Cloud LoadBalancer)
Ribbon은 Spring Cloud LoadBalancer(이하 SCL)에 대체되었다. 별도의 복잡한 설정 없이도 Eureka, OpenFeign 등 Spring Cloud 구성요소와 연동되어 자동으로 로드밸런싱을 수행한다.
build.gradle
dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer' }application.yml, 로드밸런싱 알고리즘 또는 캐싱 튜닝이 필요할 경우 작성한다
spring: cloud: loadbalancer: # 로드밸런서가 유레카로부터 받아온 서버 목록을 캐싱하는 시간 설정 (기본 35초) # 서비스 인스턴스가 자주 켜고 꺼진다면 이 시간을 줄여야 에러가 안남 cache: ttl: 10s # 알고리즘을 바꾸고 싶을 때 (기본값: round-robin) # configurations: random
'IT > Spring Boot' 카테고리의 다른 글
| [Spring boot] Spring Cloud Config (0) | 2026.07.03 |
|---|---|
| [Spring boot] Resilience4j 서킷 브레이커 (0) | 2026.07.01 |
| [Spring boot] Spring Cloud 서비스 디스커버리 (Eureka) (0) | 2026.06.25 |
| [Spring boot] MSA, Spring Cloud 개요 (0) | 2026.06.24 |
| [Spring boot] @Scheduled (0) | 2026.06.23 |
