mvc와 webflux의 차이


MVC

요청이 들어오면 queue에 담아 쓰레드풀에 있는 쓰레드를 사용해 요청을 처리한다.

쓰레드는 새로 생성 시 비용이 크기에 생성된 쓰레드를 재사용 하는데

쓰레드 풀 사이즈를 초과하게 되면 Thread Pool Hell 발생 한다

트래픽에 맞게 쓰레드 풀 사이즈를 조정해줘야 한다.


Webflux

요청이 들어오면 이벤트 루프를 통해 처리한다.

다수의 요청을 하나의 쓰레드에서 처리가능하며 worker thread default size는 서버의 core 개수로 설정이 된다.

http Request를 Evevt Loop에 등록하고 Evevt Loop를 돌면서 요청을 감지하고 Handler에 해당 처리를 위임해주는 부수적인 부분은 언어 레벨에서 처리

처리가 완료되면 callback 메소드 등을 통해 응답을 반환한다

비동기 / 논블락킹로 작성되어야 한다.

webflux가 효과적인 이유는 I/O를 Non Blockkng와 Request를 Event로 Event Driven을 통해서 효율적으로 처리하기 때문에 가능하다.

네트워크 IO가 빈번한 곳에서 크게 유용하다.