[SPRING] 스프링 MVC (async) 대 스프링 WebFlux
SPRING스프링 MVC (async) 대 스프링 WebFlux
Spring WebFlux를 이해하려고합니다. 지금까지 발견 한 것들은 코어, 서블릿 API, 요청 당 스레드, HTTP 2, 서버 푸시, application / stream + json에서 반응이 없습니다.
하지만 Spring MVC에서 비동기 호출의 차이점은 무엇입니까? 제 말은 Spring MVC에서 Future, DefferedResult 등을 반환 할 때 요청 처리기 (컨트롤러 메서드)에서 별도의 스레드에서 실행되는 논리를 얻음으로써 요청을 디스패치하기위한 스레드 풀 리소스를 절약 할 수 있다는 것입니다.
그러니 그 차이점을 강조해 주시겠습니까? 왜 WebFlux가 더 나은가?
대단히 감사합니다!
해결법
-
==============================
1.서블릿 비동기 모델은 컨테이너 스레드 (1 서블릿 요청 / 스레드 모델)와 응용 프로그램에서 요청 처리 사이에 비동기 경계를 도입합니다. 처리는 다른 스레드에서 발생하거나 대기 할 수 있습니다. 결국 컨테이너 스레드로 다시 디스패치하고 차단 방식으로 읽기 / 쓰기해야합니다 (InputStream 및 OutputStream은 본질적으로 API를 차단합니다).
서블릿 비동기 모델은 컨테이너 스레드 (1 서블릿 요청 / 스레드 모델)와 응용 프로그램에서 요청 처리 사이에 비동기 경계를 도입합니다. 처리는 다른 스레드에서 발생하거나 대기 할 수 있습니다. 결국 컨테이너 스레드로 다시 디스패치하고 차단 방식으로 읽기 / 쓰기해야합니다 (InputStream 및 OutputStream은 본질적으로 API를 차단합니다).
이 모델에서는 동시성을 얻기 위해 많은 스레드가 필요합니다 (그 중 많은 스레드가 I / O 대기를 막을 수 있기 때문에). 이는 리소스 비용이며 사용 사례에 따라 적절하지 않을 수 있습니다.
비 블로킹 코드를 사용하면 많은 요청을 동시에 처리하기 위해 몇 개의 스레드 만 있으면됩니다. 이것은 다른 동시성 모델입니다. 어떤 모델과 마찬가지로 이점과 상충 관계가 있습니다.
이 비교에 대한 자세한 내용은이 서블릿 대 리 액티브 스택 토론이 중요해야합니다.
from https://stackoverflow.com/questions/46606246/spring-mvc-async-vs-spring-webflux by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링의 공유 EntityManager에서 트랜잭션을 수동으로 시작하는 방법은 무엇입니까? (0) | 2019.03.13 |
---|---|
[SPRING] 어떻게 봄 부팅 응용 프로그램을 다시 시작하지 않고 런타임에 로그 수준을 변경합니까 (0) | 2019.03.13 |
[SPRING] 왜 샘물이없는거야? 3.2.4. 방출 항아리? (0) | 2019.03.13 |
[SPRING] Spring 부트 (JPA 포함) : @Entity를 다른 패키지로 이동 (0) | 2019.03.13 |
[SPRING] SpringApplication.run main 메소드 (0) | 2019.03.13 |