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 |