Webflux - reactor

2024. 9. 18. 14:34·프레임워크/자바 스프링

Reactive Streams와 Spring WebFlux: 비동기 스트림 처리의 핵심 이해

비동기 논블로킹 I/O는 현대 웹 애플리케이션에서 매우 중요한 기술입니다. 특히, Reactive Streams는 비동기 데이터를 효율적으로 처리하기 위한 표준을 정의하고, 이를 통해 고성능의 서버 애플리케이션을 구축하는 데 필수적인 역할을 합니다. 이번 포스트에서는 Reactive Streams, Reactor, Spring WebFlux의 개념을 이미지 기반으로 설명하고, 이들이 어떻게 비동기 스트림 처리를 구현하는지 살펴보겠습니다.


1. Reactive Stream 계층 구조

Reactive Streams는 비동기 스트림 처리에서 non-blocking 방식과 back pressure 메커니즘을 통해 데이터를 효율적으로 관리합니다. 여기서 중요한 것은 소비자가 처리할 수 있는 만큼의 데이터를 제어할 수 있다는 점입니다.


2. Reactive Streams: 비동기 스트림 처리 표준

Reactive Streams는 비동기 스트림 처리의 표준을 정의하며, 특히 back pressure 메커니즘을 통해 데이터를 효율적으로 처리하는 것이 핵심입니다.


3. Reactor 구성 요소: 비동기 스트림 구성

Reactor에서 Publisher, Processor, Subscriber, Subscription은 데이터의 흐름을 제어합니다. Subscription은 Publisher와 Subscriber 간의 연결을 관리하여, 데이터의 요청(request)과 취소(cancel) 같은 행동을 조정하는 중요한 매개체 역할을 합니다.


4. Spring WebFlux: Reactive Streams의 구성 요소

Spring WebFlux에서 Subscription은 Publisher와 Subscriber 사이에서 데이터 요청과 전송 흐름을 조정하는 중요한 매개체로 동작합니다. request n을 통해 구독자가 처리할 수 있는 만큼의 데이터를 요청하며, Subscription을 통해 데이터 흐름을 관리합니다.


5. Publisher와 Subscriber 간의 상호작용

Subscription은 Publisher와 Subscriber 사이에서 데이터 요청을 관리하고, Subscriber가 request n으로 요청한 데이터를 Publisher에게 전달받아 Subscriber에게 전송합니다. cancel을 통해 구독을 중단할 수도 있습니다.


6. Subscriber의 주요 메서드

classDiagram
  class Subscriber {
    +onSubscribe
    +onNext
    +onError
    +onComplete
  }

Subscriber는 주로 onSubscribe, onNext, onError, onComplete 메서드를 통해 데이터를 처리합니다. 이 메서드들은 Subscription에서 받은 데이터를 다루는 중요한 콜백 함수들입니다.


7. Subscription의 역할

classDiagram
  class Subscription {
    +request long n
    +cancel
  }

Subscription은 Publisher와 Subscriber 사이의 데이터 흐름을 관리합니다. request n을 통해 Publisher에게 데이터를 요청하고, cancel을 통해 구독을 취소할 수 있습니다.


8. Processor의 역할

Processor는 Publisher와 Subscriber의 역할을 모두 수행하며, 데이터를 변환한 후 Subscription을 통해 Subscriber에게 전달합니다.


9. Spring WebFlux의 비동기 처리

Spring WebFlux는 비동기 방식으로 데이터를 처리하며, 여러 스레드에서 Subscriber가 데이터를 처리할 수 있습니다. 이를 통해 고성능 서버를 구축할 수 있습니다.


10. Spring WebFlux의 Back Pressure

Subscription은 Publisher와 Subscriber 간의 데이터를 조정하며, request n을 통해 back pressure를 관리합니다. 구독자는 필요에 따라 cancel을 통해 구독을 중단할 수 있습니다.

저작자표시 (새창열림)

'프레임워크 > 자바 스프링' 카테고리의 다른 글

Spring Webflux 실습 - 2  (0) 2024.09.26
Spring Webflux 실습 - 1  (1) 2024.09.25
Webflux - spring mvc vs webflux  (1) 2024.09.18
Webflux 소개  (0) 2024.09.17
접속자 대기열 시스템 #1: 시스템 설계와 Spring WebFlux, Redis  (3) 2024.09.09
'프레임워크/자바 스프링' 카테고리의 다른 글
  • Spring Webflux 실습 - 2
  • Spring Webflux 실습 - 1
  • Webflux - spring mvc vs webflux
  • Webflux 소개
hyeseong-dev
hyeseong-dev
안녕하세요. 백엔드 개발자 이혜성입니다.
  • hyeseong-dev
    어제 오늘 그리고 내일
    hyeseong-dev
  • 전체
    오늘
    어제
    • 분류 전체보기 (286)
      • 여러가지 (107)
        • 알고리즘 & 자료구조 (72)
        • 오류 (4)
        • 이것저것 (29)
        • 일기 (1)
      • 프레임워크 (39)
        • 자바 스프링 (39)
        • React Native (0)
      • 프로그래밍 언어 (38)
        • 파이썬 (30)
        • 자바 (3)
        • 스프링부트 (5)
      • 컴퓨터 구조와 운영체제 (3)
      • DB (17)
        • SQL (0)
        • Redis (17)
      • 클라우드 컴퓨팅 (2)
        • 도커 (2)
        • AWS (0)
      • 스케쥴 (65)
        • 세미나 (0)
        • 수료 (0)
        • 스터디 (24)
        • 시험 (41)
      • 트러블슈팅 (1)
      • 자격증 (0)
        • 정보처리기사 (0)
      • 재태크 (5)
        • 암호화폐 (5)
        • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java
    SAA
    취업리부트
    Redis
    Python
    Spring Boot
    spring
    WebFlux
    자바
    OOP
    시험
    Docker-compose
    reactor
    RDS
    AWS
    ecs
    #개발자포트폴리오 #개발자이력서 #개발자취업 #개발자취준 #코딩테스트 #항해99 #취리코 #취업리부트코스
    EC2
    celery
    프로그래머스
    docker
    Spring WebFlux
    항해99
    FastAPI
    DP
    mybatis
    백준
    그리디
    완전탐색
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeseong-dev
Webflux - reactor
상단으로

티스토리툴바