전자정부프레임워크
표준프레임워크) MSA_적용 개발 실습 -5
김볼드
2022. 10. 20. 15:51
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
실행 결과