코드스테이츠_국비교육/[Section4]

70.01_[Spring WebFlux] Project Reactor_22.11.30

생각없이 해도 생각보다 좋다. 2022. 11. 30. 15:22

>Project Reactor (Reactor)

: 리액티브 스트림즈 표준 사양 구현체 중 하나(대표)

: Spring Reacive Web Application을 만드는데 핵심적인 역할을 함.

: Reactor 뿐 만 아니라 Spring WebFlux 를 사용.

: 즉, Spring Reacive Web Application은 Reactor를 이용한 Spring WebFlux 기반의 Application이다.

 

>Reactor 공식 홈

https://projectreactor.io/

 

>Reactor 특징

1. Reactive Streams를 구현한 리액티브 라이브러리

2. Non-Blocking 통신 지원

3. Mono[0|1] 과 Flux[N]이라는 두 가지 타입의 Publisher 지원

//Mono[0|1] : 0건 혹은 1건의 데이터 emit 가능

//Flux[N] : N건의 데이터 emit 가능

4. MSA 구조에 적합한 라이브러리

: MSA(Microservice Architecture) 기반 애플리케이션은 서비스들 간의 통신이 잦기 때문에 요청 스레드를 차단하는 Blocking 통신을 사용하기 힘듬.

5. Backpressure전략 지원

: Subscriber가 처리할 수 있는 속도에 맞추어 Publisher의 emit 속도를 조절함.

 

>마블 다이어그램

-마블(구슬) : 하나의 데이터를 의미

-다이어그램 흐름 : 시간에 다른 데이터 변화 흐름

 

>스케쥴러

: Reactor Sequence 상에서 처리되는 동작들을 하나 이상의 쓰레드에서 동작하도록 별도의 쓰레드를 제공해주는 관리자

: Reactor의 Scheduler는 복잡한 멀티스레딩 프로세스를 단순하게 해주는 중요한 역할을 함.