반응형

Publisher 3

[WebFlux] Backpressure란? – 리액티브 데이터 흐름 제어의 핵심

Backpressure(배압)는 리액티브 프로그래밍에서 데이터 생산자(Publisher)와 소비자(Subscriber) 간의 흐름 제어 메커니즘입니다. 시스템이 데이터 과부하를 방지하고 안정성을 보장하기 위해 반드시 이해해야 하는 개념입니다. 1. Backpressure가 필요한 이유 문제 상황빠른 Publisher vs 느린 SubscriberPublisher가 초당 10,000개 데이터를 emit하는데, Subscriber가 초당 100개만 처리 가능 → 처리되지 않은 데이터가 쌓이면서 메모리 오버플로우 발생 가능 해결 방안역압 적용: Subscriber가 처리 가능한 만큼만 데이터 요청"1개 처리 완료 → 다음 1개 요청" 방식으로 시스템 과부하 방지 2. Reactor의 Backpressure..

WebFlux Cold Sequence와 Hot Sequence: 데이터 흐름의 두 가지 방식

리액티브 프로그래밍에서 Cold Sequence와 Hot Sequence는 데이터 발행 방식을 결정하는 핵심 개념입니다. 이 두 방식은 구독자(Subscriber)와의 관계와 데이터 처리 타이밍에 근본적인 차이를 가지며, Spring WebFlux 환경에서 효율적인 시스템 설계를 위해 반드시 이해해야 합니다. 1. Cold Sequence: 매번 새로 시작되는 데이터 흐름정의Cold Publisher가 생성하는 데이터 흐름각 구독 발생 시마다 데이터 스트림을 처음부터 재생성독립적인 데이터 처리 파이프라인 제공특징독립적 실행: 구독자마다 별도의 데이터 스트림 생성Flux coldFlux = Flux.just("A", "B", "C") .map(String:..

[WebFlux 심층 분석] 리액티브 스트림즈 컴포넌트 구현 및 Kafka와의 비교

리액티브 스트림즈는 비동기적이고 Non-Blocking 방식의 데이터 처리를 위한 표준입니다. 이 글에서는 리액티브 스트림즈의 주요 컴포넌트 구현과 Apache Kafka와의 차이점을 살펴보겠습니다. 리액티브 스트림즈 주요 컴포넌트Publisherpublic class MyPublisher implements Publisher { private final List> subscribers = new ArrayList(); @Override public void subscribe(Subscriber subscriber) { subscribers.add(subscriber); subscriber.onSubscribe(new MySubscription(subscriber..

반응형