https://velog.io/@sungjin0757/Spring-Cloud%EB%A1%9C-%EA%B0%9C%EB%B0%9C%ED%95%98%EB%8A%94-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98-API-GATEWAYRoutes
이전 시간에 만들었던 Project를 추가로 개발 하겠습니다.
Client가 Spring Cloud Gateway로 요청을 하게 되면 Gateway는 해당하는 서비스로 요청을 분기 하여줌. Gateway안에서 Gateway Hnadler Mapping으로 어떤 요청이 들어왔는지 요청 정보를 받고 요청에 대한 사전 조건으로 인하여 설정 정보의 predicate영역에서 분기 시켜주는 것!
Gateway는 요청을 분기 시켜주기 전 과 서비스에게 요청에 대한 응답을 받은 후에 각각 Filter 처리를 해 줄 수 있습니다. 이를 pre filter 와 post filter라고 합니다!
exchange로 request 및 response를 가져올 수 있고 동기 방식인 Tomcat이 아닌 비동기 방식인 Netty를 사용하고 있기 때문에 서블릿이 아닌 serverHttpRequest와 serverHttpResponse를 사용. 사전 처리가 끝나게 되면 chain을 이용하여 post filter를 추가할 수 있음.
Servlet이 아닌 WebFlux기법
webflux에서도 Mono와 Flux로 나뉘게 됨. 비동기 방식을 활용하기위해 servlet을 활용하지 않음
- Mono는 0~1개의 결과만을 처리하기 위한 Reactor 객체
- 보통 여러 스트림을 하나의 결과로 모아줄 때 사용
- Flux는 0~N개의 결과물을 처리하기 위한 Reactor 객체
- 각각의 Mono를 합쳐서 여러개의 값을 처리할 때 사용
- 의문점-굳이 그럼 Mono를 쓰는 이유??
- 자바에서의 메소드에서 결과값이 하나면 List를 반환하지 않고 하나의 데이터만 반환하는 것 처럼 비슷한 이유! 시스템에서의 Multi Result가 아닌 하나의 결과셋만 있는 경우가 있기 때문에 Mono도 활용
이 글은 인프런 이도원님의 'Spring Cloud로 개발하는 마이크로서비스 애플리케이션'을 수강하고 작성합니다.
출처:https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/dashboard