IT기술/webflux (reactor)

리액티브 스트림즈(Reactive Streams) 핵심 정리

후스파 2025. 3. 23. 00:26
반응형
spring framework webflux reactor

리액티브 스트림즈는 비동기·논블로킹 환경에서 데이터 스트림을 처리하기 위한 표준 사양으로, 대규모 트래픽 처리와 시스템 효율성 향상에 기여합니다.

1. 주요 용어

▷ Signal

  • PublisherSubscriber 간 주고받는 상호작용 메시지 (예: onNext, onComplete).
  • 데이터 상태/이벤트를 전달하는 신호.

▷ Demand

  • Subscriber가 요청했으나 아직 처리되지 않은 데이터의 양.

▷ Emit

  • Publisher가 onNext를 통해 데이터를 발행하는 행위.

▷ Upstream/Downstream

  • Upstream: 현재 메서드보다 상위의 데이터 소스 (예: just → filter에서 just는 Upstream).
  • Downstream: 하위 처리 단계 (예: filter → map에서 map은 Downstream).

▷ Sequence

  • 데이터 흐름을 정의한 연산 체인 (예: Flux.just().filter().map()).

▷ Operator

  • 데이터 변환/필터링을 수행하는 연산자 (예: filter, map).

▷ Source

  • 최초 데이터 생성 지점 (예: Flux.just()의 인자).

2. 구현 규칙

Publisher

  1. onNext 발행 횟수는 Subscriber 요청 수를 초과할 수 없음.
  2. onError 또는 onComplete로 종료 신호 전달 후 더 이상 신호 발생 금지.
  3. 구독 취소 시 신호 전달 중단.

Subscriber

  1. onSubscribe에서 Subscription.request()를 통해 초기 데이터 요청.
  2. onNext에서 데이터 처리 시 예외 발생 시 onError 호출.

Subscription

  1. request(n)으로 요청할 데이터 수 명시.
  2. cancel()로 구독 해지 가능.

Processor

  • Publisher와 Subscriber 역할을 동시에 수행 (예: 데이터 변환 중개)16.

3. 주요 구현체

라이브러리특징
RxJava 넷플릭스 개발, 복잡한 비동기 흐름 처리에 강점.
Project Reactor Spring WebFlux의 기본 엔진, 선언형 API 제공.
Akka Streams 분산 시스템에 적합, Actor 모델 기반.
Java Flow API Java 9+ 내장 SPI, 표준 인터페이스 제공.
 

4. 적용 시 고려사항

  1. Backpressure 관리: Subscriber의 처리 속도에 맞춰 데이터 발행량 조절 필요.
  2. 에러 핸들링: onError를 활용한 복구 로직 필수.
  3. 성능 최적화: 불필요한 Operator 체인 최소화.

리액티브 스트림즈는 고성능 서버 개발의 핵심 기술로, 특히 Spring WebFlux 기반 애플리케이션에서 필수적으로 활용됩니다.

 

 

[WebFlux] 리액티브 스트림즈 용어, 규칙, 라이브러리

리액티브 스트림즈 용어 Signal Publisher와 Subscriber 간에 주고받는 메시지 신호로, 각 인터페이스에...

blog.naver.com

 

 

Blocking I/O와 Non-Blocking I/O: 개념과 WebFlux에서의 활용

Blocking I/O와 Non-Blocking I/O는 시스템의 성능과 효율성을 결정짓는 중요한 개념입니다. 특히, Spring WebFlux는 Non-Blocking I/O를 기반으로 설계되어 대량의 요청을 효율적으로 처리할 수 있도록 돕습니다

hoosfa.tistory.com

 

반응형