[코드스테이츠] S4.Unit6 회고

JinYoung Choi·2023년 6월 5일
0

전 유닛에서 배운 리액티브 스트림즈의 구현체 중 하나인 Reactor에 대해 공부했다.

Reactor에 대해 배우면서 느꼈던 점은, 명령형 프로그래밍 방식에 익숙한 사람들에게는 많이 생소할 수 있다는 점이었다.

하지만 애플리케이션의 동시성을 개선하고, 시스템의 복잡성을 줄이는데 Reactor가 얼마나 효과적인지 깨닫게 되었다.

근데 어렵긴 하네?..ㅋㅋ

Reactor란?

Reactor는 리액티브 프로그래밍을 위한 라이브러리로, Java 8과 호환되는 리액티브 스트림즈 구현체. 비동기 데이터 스트림을 처리하고, 복잡한 비동기 시스템을 간소화하는 데 사용된다.

특징

Reactor는 데이터의 동기, 비동기 처리를 모두 지원하며, Flux와 Mono라는 두 개의 기본적인 타입을 제공한다. Flux는 0개 이상의 데이터를 처리하는 데 사용되며, Mono는 최대 한 개의 데이터를 처리하는 데 사용된다. 또한 Reactor는 라이프사이클 이벤트에 대한 다양한 연산자를 제공하여 세부적인 동작 제어를 가능하게 한다.

동작 방식

Reactor는 데이터 스트림을 비동기적으로 처리하며, 이를 위해 Publisher-Subscriber 모델을 사용한다. Publisher는 데이터를 생성하고, Subscriber는 데이터를 소비한다. Reactor의 연산자를 통해 스트림에 변형을 가하거나, 조건에 따른 데이터 흐름 제어를 할 수 있다.

마블 다이어그램

마블 다이어그램은 리액티브 프로그래밍에서 연산자의 동작을 시각적으로 표현하는 도구. 연산자의 입력과 출력, 그리고 시간의 흐름을 표현하여 이해를 돕는다.

Reactor Publisher 타입의 특징

Reactor에서는 Flux와 Mono 두 가지의 Publisher 타입을 제공한다. Flux는 0개 이상의 데이터를 표현하고, Mono는 최대 1개의 데이터를 표현한다. 각각의 Publisher 타입은 해당하는 데이터 개수에 맞는 다양한 연산자를 제공한다.

Reactor의 Scheduler

Scheduler는 Reactor에서 병렬 처리를 관리하는 역할을 한다. Scheduler를 통해 작업을 다른 쓰레드에 할당하거나, 병렬로 처리되어야 하는 작업을 관리할 수 있다.

Reactor의 필수 Operator

Reactor는 다양한 연산자를 제공한다. map, filter, flatMap 등은 데이터 변환 및 필터링을 위한 연산자이며, zip, combineLatest 등은 여러 스트림을 조합하는 연산자이다. 또한, onErrorReturn, onErrorResume 등은 에러 처리에 사용되는 연산자이다.

profile
백엔드 취준생

0개의 댓글