인프런 커뮤니티 질문&답변

kkkh0712님의 프로필 이미지

작성한 질문수

Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Gateway - Load Balancer ➁

로드밸런싱 전략을 바꿀려면 어떻게 해야하나요?

작성

·

584

1

라운드로빈에서 커스텀한 전략으로 바꾸고 싶습니다.

답변 1

2

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

Spring Cloud Loadbalancer에서는 round-robin과 random 방식을 지원합니다. 말씀하신 것 처럼 가중치나 하드웨어 리소스에 대한 조건으로 분산하는 것은 지원되지 않는 것으로 알고 있습니다. 

https://github.com/spring-cloud/spring-cloud-commons/tree/master/spring-cloud-loadbalancer/src/main/java/org/springframework/cloud/loadbalancer/core

기본 정책인 round-robin 말고 random 방식을 사용하시려면 다음과 같은 빈을 등록하시면 됩니다. 

@Configuration
public class LoadBalancingConfiguration {

    @Bean
    public ReactorLoadBalancer<ServiceInstance> reactorServiceInstanceLoadBalancer(Environment environment,
        LoadBalancerClientFactory loadBalancerClientFactory) {
      String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
      return new RandomLoadBalancer(
          loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }

}

https://docs.spring.io/spring-cloud-commons/docs/current/reference/html/#switching-between-the-load-balancing-algorithms

다음 강의로 준비 중인 "MSA 구성요소와 패턴"에서는 다른 제품의 Service Discovery, Gateway, Load Balancer 를 사용하는 애플리케이션을 구축하려고 합니다.

감사합니다. 

kkkh0712님의 프로필 이미지

작성한 질문수

질문하기