JAVA

[JAVA] REACTIVE STREAMS

집한구석 2022. 5. 6. 15:19
728x90

Reactive Streams 

  • 리액티브 프로그래밍 라이브러리 표준 사양 
  • 리액티브 프로그래밍에 대한 인터페이스만 제공하며, RxJava는 Reactive Streams의 인터페이스들의 구현체
  • Reactive Streams는 Publisher / Subscriber / Subscription / Processor 4개 인터페이스를 제공
인터페이스 설명
Publisher 데이터를 생성하고 통지
Subscriber 통지된 데이터를 전달받아서 처리
Subscription 전달 받을 데이터의 개수를 요청하고 구독을 해지함
Processor Publisher와 Subscriber의 기능이 모두 있음

Cold Publisher / Hot Publisher

Publisher 종류 설명
Cold Publisher 생산자는 소비자가 구독 할때마다 데이터를 처음부터 새로 통지함
데이터를 통지하는 새로운 타임 라인이 생성
소비자는 구독 시점과 상관없이 통지된 데이터를 처음부터 받을 수 있음 (처음부터 모든 데이터를 받음)
Hot Publisher 생산자는 소비자 수와 상관없이 데이터를 한번만 통지함
데이터를 통지하는 타임 라인은 하나
소비자는 발행된 데이터를 처음부터 전달 받는 것이 아니라 구독한 시점에 통지된 데이터들만 받을 수 있음

Back Pressure

  • 데이터를 통지하는 속도가 Subscriber에서 통지된 데이터를 전달받아 처리하는 속도보다 빠를 때 밸런스를 맞추기 위해서 데이터 통지량을 제어하는 기능
  • Reactive Stream의 주된 목적은 비동기 경계를 명확하게 하여 스트림 데이터의 교환을 효과적으로 관리하는 것인데 BackPressure가 이부분을 해결 해 줌

Reactive Streams을 이해하기 위해 알아야 하는 것

  • Observable : 데이터 소스
  • Operators : 데이터 소스를 처리하는 함수
  • Scheduler : 스레드 관리자
  • Subscriber : 발행하는 데이터 소스를 구독하는 구독자
  • 함수형 프로그래밍

'JAVA' 카테고리의 다른 글

[JAVA] OPTIONAL  (0) 2022.05.30
[JAVA] 메소드 레퍼런스  (0) 2022.05.06
[JAVA] VAR 타입추론  (0) 2022.04.24
[JAVA] 하이버네이트(HIBERNATE) DDL-AUTO 옵션 정리  (0) 2022.04.19
[JAVA] 어댑터 패턴  (0) 2022.04.06