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
실행 결과
'전자정부프레임워크' 카테고리의 다른 글
표준프레임워크) MSA_적용 개발 실습 -4 (0) | 2022.10.20 |
---|---|
표준프레임워크) MSA_적용 개발 실습 -3 (0) | 2022.10.20 |
표준프레임워크) MSA_적용 개발 실습 -2 (0) | 2022.10.20 |
표준프레임워크) MSA_적용 개발 실습 -1 (0) | 2022.10.20 |
전자정부 lab104 공통컴포넌트 생성 (0) | 2022.10.06 |