본문 바로가기

전자정부프레임워크

표준프레임워크) MSA_적용 개발 실습 -5

Client Load Balancer – Ribbon

Ribbon 은 Client 에 탑재할 수 있는 소프트웨어 기반의 Load Balancer 이다.
일반적으로 사용하는 하드웨어적인 L4 Switch 를 사용하지만, MSA 에서는
소프트웨어적으로 구현된 클라이어트사이드 로드벨런싱으로 주로 사용한다. Ribbon 은
분산 처리 방법으로 여러 서버를 라운드 로빈 방식으로 부하 분산 기능을 제공한다.

 

 

Pom.xml 에 Ribbon 추가

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>${spring.cloud.version}</version>
</dependency>

 

 

CatalogsApplication.java 의 RestTemplate 에 @LoadBalanced 어노테이션 추가

package egovframework.msa.sample;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.client.RestTemplate;
@ComponentScan("egovframework.*")
@EnableCircuitBreaker
@SpringBootApplication
public class CatalogsApplication {
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
public static void main(String[] args) {
SpringApplication.
run(CatalogsApplication.class);
}
}

 

 

 

CustomerApiServiceImpl.java 의 Customers 서비스 호출 URL 주소를
명시적으로 변경한다.

localhost:8082 -> custmoer

@Override
@HystrixCommand
(fallbackMethod = "getCustomerDetailFallback")
public String getCustomerDetail(String customerId) {
return restTemplate.getForObject("http://customer/customers/" + customerId,
String.class);
}


 

 

 

Application.yml 설정 추가

customer:
  ribbon:
    listOfServers: localhost:8082

 

실행 결과