본문 바로가기

카테고리 없음

Project Reactor

약 2주간 webclient 부터 시작해서 reactor 에 대해 구글링하면서 구조를 잡아가고 있다. 

- reactive streams : 기술 명세
- reactive streams 구현체 : rxjava, project reactor, akka 
- base skill :lambda,  anonymous class 
- observer pattern
- callback pattern (pull) 
- push vs pull 차이
- hot vs cold 
- block 필요성
- publishOn vs subscribeOn -> async 관련
- request vs buffer -> backpressure 관련
- async 는 default가  아니다. webclient 는 default 임. 
- backpressure 도 default가 아니다. default 가 Max(무한대). 
- async를 사용하지 않는 callback 은 non-blocking 과 직접 관련이 있지만 async 는 아니다. async 로 하려면 publishOn or subscribeOn 과 함께 사용해야 한다.  
- 개인적으로 webflux 는 router pattern이 매력적
- webflux를 제대로 이해하려면 java nio, java native, netty, epoll, iocp, event-driven 에 대해 이해를 해야 한다. 
- async는 만능이 아니다.(reactor 문서에도 나옴) backpressure 도 만능이 아니다.
- webflux 의 reative 한 느낌을 제대로 사용하려면 thymeleaf 사용.
- reactive 는 전체적인 성능에 대한 향상이 아니다. 
- rxjava 는 stream 처리에 유리하고 reactor 는 process 처리에 유리 하다는 느낌을 받음
- rxjava 책 훑고 reactor 로 다시 찾아보며 습득