MSA(LoadBalancing)

jhwan·2025년 2월 6일

MSA

목록 보기
2/3

큰 틀 설명

  • Order application을 통해 Product를 조회할 수 있게 한다.
  • Product의 instance는 3개가 있고, Order instance는 하나이다.

dependency

  • Eureka Server의 dependency들은 전과 같음
  • Eureka client의 dependencies는 Eureka discovery Client, Spring Web, Lombok, OpenFeign

Controller

application.java 파일에 들어가서 상단에 @EnableFeignClients 설정 (Order와 Product 둘 다)

Product의 yml

spring:
  application:
    name: product-service
server:
  port: 19092
eureka:
  client:
    service-url:
      defaultZone: http://localhost:19090/eureka/

Instance를 여러개 생성

  • Edit Configuration => Modify Options => Add VM Options

    ProductClient in Order App

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
@FeignClient(name = "product-service")
public interface ProductClient {
    @GetMapping("/product/{id}")
    String getProduct(@PathVariable("id") String id);
}

OrderService in Order App

import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class OrderService {

    private final ProductClient productClient;
    
    public String getProductInfo(String productId) {
        return productClient.getProduct(productId);
    }
    
    public String getOrder(String orderId) {
        if(orderId.equals("1") ){
            String productId = "2";
            String productInfo = getProductInfo(productId);
            return "Your order is " + orderId + " and " + productInfo;

        }
        return "Not exist order...";
        }
    }

흐름

  • OrderController => Service => ProductClient를 통해 RoadBalancing(Ribbon)이 됨(Product Instance에 API를 호출)

0개의 댓글