WebFlux란?
CPU Bound와 I/O Bound의 성능을 향상시키기 위해 비동기 프로그래밍을 지원하는 Spring 프레임워크의 모듈이다.
IO Multiplexing vs Thread per Request
IO Multiplexing
kernel에서 완료된 작업을 event 단위로 알려줘서 하나의 스레드에서 여러 IO 작업을 수행할 수 있는 방식이다. 아래의 코드를 확인하면 key.isAcceptable()인 상태에 if문에 진입해서 serverChannel에 key와 처리할 로직을 등록하고 해당 로직이 처리가 되면 key.isReadable()이 true가 되면 처리된 결과를 read하는 로직이 실행된다고 볼 수 있다.
Thread per Request
하나의 요청당 스레드 하나를 사용하는 Blocking I/O 방식이다.