본문 바로가기

분류 전체보기141

5. Reactive - Reactor와 연산자 Reactor의 핵심요소 1. Stream 1) publisher 2) subscriber 3) subscription 4) processor subscriber는 subscribe를 통해 publisher에게 요청을 하게되고, 이 과정에서 subscription이라는 객체로 publisher와 연결. subscriber는 구독하여 요청하거나 요청 취소할 수 있고, publisher는 데이터를 제공하거나, 오류처리, 종료시킬 수 있다. processor는 publisher와 subscriber를 상속받는 인터페이스이다. 2. asynchronous 데이터 처리 중 같은 쓰레드 혹은 다른 쓰레드를 사용하거나 병렬 처리할 수 있다. 3. back pressure 처리속도 불균형이 있을 경우 불균형을 처리하는.. 2024. 4. 4.
4. Reactive - Spring MVC VS Webflux Spring Webflux란 무엇인지 알아보기 전에, Spring MVC와 비교해보자. 1. Reactor는 Reactive Stack에서는 필수로 사용되고, Reactive Streaming의 구현체로, Spring Security Reactive, data, webflux등의 비동기 처리의 기반이 된다. 2. Sevlet Stack은 Spring MVC에서 사용하는 요청 당 하나의 쓰레드 모델의 동기 I/O 스택이다. 즉 웹 요청부터 비즈니스 로직 등 모든 것을 하나의 쓰레드가 담당한다. 반면 Reactive Stack에서는 Netty가 먼저 Controller-Service까지 Reactor Netty가 담당하며, DAO부터는 Reactor로 데이터를 전달하여 처리하게 된다. 3. Reactive .. 2024. 4. 4.
3. Reactive - Netty Netty 1. 비동기 이벤트 기반의 네트워크 어플리케이션 프레임워크 2. Http 등 다양한 프로토콜 지원 3. Java IO, NIO, selector 기반의 저 리소스 고 성능 보장 4. 불필요한 메모리 copy를 최소한으로, 유연하며 확장 가능한 이벤트 모델 기반이다. 5. 서버 및 클라이언트 모두 지원된다. NIOEventLoop - EventExecutor, TaskQueue, Selector를 포함한다 - EventExecutor : task를 실행하는 쓰레드풀 - TaskQueue : task를 저장하는 queue eventExecutor가 즉시 task를 수행하지 않고 taskQueue에 넣은 후, 나중에 꺼내서 처리 가능 - Selector : I/O Multiplexing을 지원 NI.. 2024. 4. 4.
2. Reactive - CompletableFuture CompletableFuture는 Java 8에서 비동기 프로그래밍을 지원코자 도입되었다. Lambda, Method Reference 등 Java 8의 새로운 기능을 지원한다. 1. Method Reference "::" 연산자를 통해 함수에 대한 참조를 간결하게 표현한다. 1) Method Reference 객체 메소드에 참조 2) Static Method Reference 스태틱 메소드에 참조 3) Instance Method Reference 클래스가 가지고 있는 인스턴스에 대한 참조 4) Constructor Method Reference 생성자 메소드의 참조 즉 메소드의 레퍼런스는 보통 참조의 표현보다 조금 더 간결하게 표현할 수 있는 표현식이다. 2. CompletableFuture Clas.. 2024. 4. 4.