Dev/Reactive Programming 5

[Reactor] Reactor 개요

Reactor란? Reactor는 리액티브 스트림즈의 구현체로 리액티브 프로그래밍을 위한 라이브러리이다. Reactor의 Core 라이브러리는 Spring WebFlux 프레임워크에 라이브러리로 포함되어, WebFlux 기반의 리액티브 애플리케이션을 제작하기 위한 핵심 역할을 담당한다.  Reactor의 특징 1. Reactive Streams위에서 언급했지만, Reactor는 리액티브 스트림즈의 표준 사양을 구현한 구현체이다. 2. Non-BlockingReactor는 Non-Blocking 기반 애플리케이션을 제작하기 위한 핵심 기술이다. 해당 내용은 아래 게시글에 보다 자세히 언급되어 있다. [Reactive Programming] Blocking I/O와 Non-Blocking I/OBlockin..

[Reactive Programming] 리액티브 프로그래밍을 위한 사전 지식

함수형 인터페이스(Functional Interface) 함수형 인터페이스란 단 하나의 추상 메서드를 갖는 인터페이스로, 함수를 일급 객체로 취급하여 함수 자체를 파라미터로 전달할 수 있는 기법이다. 자바에서 이같은 함수형 인터페이스라는 개념은 자바 8부터 추가되었으나, 그 이전에도 함수형 인터페이스처럼 사용하는 것이 있었는데 바로 Comparator이다. 예제 코드public class Example4_1 { private static final List cryptoCurrencies = SampleData.crytoCurrencies; public static void main(String[] args) { cryptoCurrencies.sort(new Comparator() { @Overrid..

[Reactive Programming] Blocking I/O와 Non-Blocking I/O

Blocking I/O   Blocking I/O의 설명을 위한 예시 그림이다. 본사 서버의 스레드가 지점 서버에 데이터를 요청하면 해당 데이터를 반환받을 때까지 스레드는 대기 상태가 되며 다른 작업을 처리하지 못한다. 이렇게 하나의 스레드가 I/O에 의해 차단되어 대기하는 것을 Blocking I/O라 한다. 이같은 Blocking I/O의 단점을 극복하기 위해 멀티스레딩 기법을 이용하여 추가 스레드들을 할당해  동시 작업이 가능하게끔 한다. 멀티스레딩 기법의 단점1. 컨텍스트 스위칭멀티스레딩의 작동 방식은 사실 하나의 프로세서가 여러 개의 스레드를 번갈아서 실행하는 것이다. 이때, 스레드를 전환하는 과정에서 오버헤드가 발생하게 되어 스레드가 많아질수록 CPU의 성능 저하가 일어날 수 있다. 2. 메모..

[Reactive Programming] 리액티브 스트림즈(Reactive Streams)

리액티브 스트림즈(Reactive Streams)란? 리액티브 스트림즈란 데이터 스트림을 Non-Blocking이면서 비동기적으로 처리하기 위한 리액티브 라이브러리의 표준 사양이다. 그 구현체로는 RxJava, Reactor, Akka Streams, Java 9 Flow API 등이 있다.  리액티브 스트림즈 구성요소 리액티브 스트림즈를 통해 구현해야 되는 API 컴포넌트는 아래와 같이 Publisher, Subscriber, Subscription, Processor 가 있다. 컴포넌트설명Publisher데이터를 생성하고 통지(발행, 게시, 방출)하는 역할을 한다.Subscriber구독한 Publisher로부터 통지(발행, 게시 방출)된 데이터를 전달받아서 처리하는 역할을 한다.Subscription..

[Reactive Programming] 리액티브 시스템과 리액티브 프로그래밍

리액티브 시스템(Reactive System) 리액티브란 사전적 의미로 어떤 이벤트나 상황이 발생했을 때, 적절하게 행동하는 것을 의미한다.  따라서 리액티브 시스템이란 반응을 잘 하는 시스템이라고 정의할 수 있고, 이는 클라이언트의 요청에 즉각적으로 응답함으로써 지연 시간을 최소화하는 시스템이라고 할 수 있다.  리액티브 선언문(The Reactive Manifesto) 리액티브 선언문이란 리액티브 시스템 구축을 위한 일종의 설계 원칙이자 리액티브 시스템의 특징이다. 이는 아래 그림 하나로 명확하게 설명할 수 있다. 방법(Means)주요 통신 수단으로 무엇을 사용할 것인지 표현한 것으로, 위 그림처럼 비동기 메시지 기반(Message Driven)의 통신을 사용할 것임을 뜻한다. 이는 구성요소들 간의 ..

반응형