일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 이분 매칭
- spring boot
- 플로이드 와샬
- 도커
- Spring Cloud Config
- 다익스트라
- Zuul
- 메모이제이션
- ZuulFilter
- spring cloud
- 구현
- 백트래킹
- BFS
- docker-compose
- 완전 탐색
- 스택
- 구간 트리
- Logback
- dp
- 스프링 시큐리티
- 이분 탐색
- Gradle
- 유레카
- 비트마스킹
- 게이트웨이
- 트리
- Java
- 달팽이
- 서비스 디스커버리
- 주울
- Today
- Total
목록주울 (6)
Hello, Freakin world!
포스트 타입 필터는 주울에서 클라이언트에게 반환하는 응답을 감시, 수정하는 용도로 사용합니다. 이전에 사전 필터에서 correlation-id 라는 헤더를 모든 요청에 추가해서 보냈습니다. 그 과정에서 RequestContext에 저장했던 correlation-id를 응답에 추가하는 필터를 만들어 보겠습니다. 아주 간단합니다. ResponseFilter package springboot.cloud.zuulexample.filter; import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import static org.spr..
이번에는 route 타입 필터를 작성해서 간단하게 A/B 테스트를 구현해보겠습니다. 전체 코드는 맨 아래 링크에서 확인 가능합니다. 시나리오 기존 member-service에서 /hello 엔드포인트가 버전업 됐습니다. 새로운 버전의 /hello를 고객들에게 직접 제공해 테스트해 보려고 합니다. 하지만 기존의 서비스를 한번에 새 버전으로 교체하는 건 위험부담이 크므로 기존 요청의 반만 새 버전으로 라우팅합니다. 라우팅 필터 작성 ABRoutingFilter import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; import ..

먼저 사전 필터를 구현해보도록 하겠습니다. 필터를 구현하는 방법은 간단합니다. 주울에서 제공하는 추상 클래스인 ZuulFilter를 상속하면 됩니다. 서비스에 대한 요청 흐름을 추적하기 위해 correlation-id를 모든 요청에 추가하기로 하고 TrackingFilter 클래스를 생성합니다. TrackingFilter package springboot.cloud.zuulexample.filter; ... import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.RequestContext; import com.netflix.zuul.exception.ZuulException; /* 게이트웨이로 들어오는 모든 요청에 correlation i..

주울은 클라이언트에게 단일 진입점을 제공하는 게이트웨이입니다. 모든 요청은 게이트웨이를 거쳐가기 때문에 보안, 로깅과 같은 횡단관심사들을 구현하기 딱 좋습니다. 이런 기능들은 필터를 통해 구현합니다. 필터들은 4가지 타입이 존재하며 아래와 같이 동작합니다. - pre-filter(사전 필터) - route-filter(경로 필터) - post-filter(사후 필터) - error-filter(에러 필터) 사전 필터 주울에서 서비스에 대한 요청이 발생하기 전에 호출됩니다. 요청 메세지의 형식을 확인하거나(특정 헤더를 포함하는지) 사용자가 인증 및 인가되었는지 확인하는 기능 등을 여기에 구현합니다. 사후 필터 서비스를 호출하고 받은 응답 받은 후 호출됩니다. 응답을 로깅하거나 에러 처리, 민감한 정보에 대..
서비스 타임아웃은 리본과 히스트릭스 각각 지정할 수 있습니다. 기본적으로 주울은 1초 이상 걸리는 호출을 종료하고 HTTP 504 에러를 반환합니다. 이는 히스트릭스에서 걸리는 타임아웃입니다. (유레카에 등록된 서비스는 기본적으로 이와 같이 동작하지만 그렇지 않은 경우엔 히스트릭스 설정을 따로 추가해야 됩니다.) 리본에서도 타임아웃을 지정할 수 있습니다. 기본값은 5000ms 입니다. 만약 5초 이상의 타임아웃을 지정하려면 리본의 기본값이 5초이기 때문에 리본에도 타임아웃을 새로 지정해야 합니다. 히스트릭스에서 타임아웃 지정 다음의 코드를 applicatoin.yml에 추가합니다. hystrix: command: default: excution.isolation.thread.timeoutInMillise..

이번 글에서는 주울로 들어오는 url을 라우팅하는 방법에 대해 살펴보겠습니다. 1. 서비스 디스커버리를 이용한 자동 경로 매핑 유레카가 연결돼있다면 기본적으로 동작하는 방식입니다. 아무런 설정이 없다면 이 방식으로 동작합니다. 이 방식은 유레카에 등록된 서비스 ID(applciation.name)을 이용해 url을 자동 매핑합니다. 직접 확인해볼까요? application.yml server: port: 9000 # eureka eureka: instance: prefer-ip-address: true client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:8761/eureka # a..