Zuul

ayboori·2024년 9월 10일
0

Spring

목록 보기
23/24

Zuul(Spring Boot 2)

💡 이 섹션은 읽고 넘어갑시다.
대부분의 회사에서 이미 만들어진 시스템은 스프링 부트 2를 사용하고 있을 가능성이 큽니다.
따라서 Zuul을 알고 가는 것이 좋을것 같습니다. (스프링 부트 3에서는 Spring Cloud 사용)
코드 보다는 기능에 집중하세요.
”클라우드 게이트웨이와 같은 기능을 제공하고 있구나” 라고 생각하고 넘어가면 됩니다.

Zuul 설정

  • Spring Boot 2에서는 Zuul을 사용하여 API 게이트웨이를 설정할 수 있습니다.
  • build.gradle 파일 예시:
    
    dependencies {
        implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
        implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    }
    
  • Spring Boot 애플리케이션 설정:
    
    @SpringBootApplication
    @EnableZuulProxy
    public class ApiGatewayApplication {
        public static void main(String[] args) {
            SpringApplication.run(ApiGatewayApplication.class, args);
        }
    }
    

라우팅 설정

  • application.yml 파일에서 라우팅 설정을 정의할 수 있습니다.
  • 예시 설정 파일:
    
    zuul:
      routes:
        users-service:
          path: /users/**
          serviceId: users-service
        orders-service:
          path: /orders/**
          serviceId: orders-service
    
    eureka:
      client:
        service-url:
          defaultZone: http://localhost:8761/eureka/
    

필터 설정

  • Zuul 필터를 사용하여 요청 전후에 다양한 작업을 수행할 수 있습니다.
  • 예시 코드:
    
    @Component
    public class PreFilter extends ZuulFilter {
    
        @Override
        public String filterType() {
            return "pre";
        }
    
        @Override
        public int filterOrder() {
            return 1;
        }
    
        @Override
        public boolean shouldFilter() {
            return true;
        }
    
        @Override
        public Object run() throws ZuulException {
            RequestContext ctx = RequestContext.getCurrentContext();
            HttpServletRequest request = ctx.getRequest();
            // 요청 로깅
            System.out.println(String.format("%s request to %s", request.getMethod(), request.getRequestURL().toString()));
            return null;
        }
    }
    

[추가정보] 사용중인 포트 정지시키기

- 윈도우
    - CMD 창을 열고 아래의 명령어를 입력합니다. 뒤에 숫자는 정지시키고자 하는 포트입니다.
        
        ```bash
        netstat -a -o | findstr 19093
        ```
        
    - 그러면 아래와 같이 해당 포트의 프로세스 리스트가 나옵니다. 리스트의 마지막이 PID 이며 이 아이드를 통해 포트를 사용하는 프로세스를 정지 할 수 있습니다.
        
        ```bash
        
        TCP     0.0.0.0:19093    0.0.0.0:0   LISTENING   2340
        ```
        
    - 명령어를 통해 프로세스를 정지합니다. 정지 명령어의 숫자는 위에서 조회한 PID 입니다.
        
        ```bash
        taskkill /f /pid 2340
        ```
        
- 맥
    - 아래의 명령어를 통해 포트의 PID를 조회합니다. 숫자는 포트입니다.
        
        ```bash
        lsof -i :19090
        ```
        
    - 이렇게 PID를 확인할 수 있습니다.
        
        ```bash
        COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
        java    38887 asdf  129u  IPv6 0xaa045ca3ee30eb9b      0t0  TCP localhost:19090->localhost:54148 (ESTABLISHED)
        java    38887 asdf  130u  IPv6 0xaa045ca3e381eb9b      0t0  TCP *:19090 (LISTEN)
        java    38887 asdf  134u  IPv6 0xaa045ca3edcee39b      0t0  TCP localhost:19090->localhost:54149 (ESTABLISHED)
        java    38887 asdf  135u  IPv6 0xaa045ca3edb5c39b      0t0  TCP localhost:19090->localhost:54152 (ESTABLISHED)
        java    38887 asdf  138u  IPv6 0xaa045ca3edcd3b9b      0t0  TCP localhost:19090->localhost:54156 (ESTABLISHED)
        java    38887 asdf  139u  IPv6 0xaa045ca3edcd2b9b      0t0  TCP localhost:19090->localhost:54157 (ESTABLISHED)
        ```
        
    - 조회된 PID를 통해 포트의 프로세스를 종료합니다. 숫자는 조회된 프로세스입니다.
        
        ```bash
        kill -9 38887
        ```
profile
프로 개발자가 되기 위해 뚜벅뚜벅.. 뚜벅초

0개의 댓글