장점 : Webflux 는 Asynchronous Non-blocking I/O 을 방식을 활용하여 성능을 올림
단점 : Blocking 코드가 있다면, 안 하느니만 못함
ex) Java Non Blocking 지원하는 DB Driver -> R2DBC
리액티브 스트림 back pressure(백프레셔)를 지원함
리액티브란
변경에 대한 반응에 중점을 두어 만들어진 프로그래밍 모델
ex) 논 블로킹 -> 동작을 중단(blocking)하는 대신 반응함
논블로킹이란
- 동기와 비동기 = 함수가 바로 리턴되는지 여부
- 블록킹과 논블록킹 = 백그라운드 작업 여부를 확인하는가 여부
동기-블록킹
=>함수를 호출하면 백그라운드 작업이 완료되었는 계속 확인하고 완료되면 함수가 리턴
비동기-논 블록킹
=>함수를 호출하고 백그라운드 작업이 끝났는지 확인하지 않고 리턴을 하고 바로 다른 작업
백프레셔(back pressure)란
Publisher 에서 발행하고, Subscriber에서 구독할 때, Publisher 에서 데이터를 Subscriber 로 Push 하는 방식이 아니라, Pull 방식으로 Subscriber 가 Publisher 로 처리할 수 있는 양의 크기만큼 데이터를 요청 함으로써 Subscriber의 장애를 방지하기 위함이다.
즉, 다이나믹 풀 방식의 데이터 요청을 통해서 구독자가 수용할 수 있는 만큼 데이터를 요청하는 방식이다.
reactive streams란
논블로킹(Non-blocking) 백프레셔(back pressure)를 이용한 비동기 데이터 처리의 표준