티스토리 뷰

Flowable 과 Observable의 비교 

Flowable

  • Reactive Streams 인터페이스를 구현함
  • Subscriber에서 데이터를 처리함
    •  ReactiveStreams에서 기본스펙으로 정해놓은 인터페이스 
  • 데이터 개수를 제어하는 배압기능이 있음 
  • Subscription으로 전달 받는 데이터 개수를 제어할 수 있음
  • Subscription로 구독을 해지

 

Observable

  • Reactive Streams 인터페이스를 구현하지 않음
  • Observer에서 데이터를 처리함
    • RxJava 에서 독자적으로 제공하는 클래스
  • 데이터 개수를 제어하는 배압기능이 없음
  • 배압 기능이 없기때문에 데이터 개수를 제어할 수 없음
  • Disposable로 구독을 해지

 

배압 (Back Pressure) 이란 ? 

Flowable에서 데이터를 통지하는 속도가 Subscriber에서 통지된 데이터를 전달 받아 처리하는 속도보다 빠를때 밸런스를 맞추기 위해 데이터 통지량을 제어하는 기능

 

 

배압 전략(BackpressureStrategy)

Rxjava에서는 BackpressureStrategy를 통해 Flowable 이 통지 대기 중인 데이터를 어떻게 다룰지에 대한 배압 전략을 제공

 

MISSING 전략

  • 배압을 적용하지 않는다
  • 나중에 onBackpressureXXX()로 배압 적용을 할 수 있다

ERROR 전략

  • 통지된 데이터가 버퍼의 크기를 초과하면 MissingBackpressureException 에러를 통지한다.
  • 즉, 소비자가 생산자의 통지 속도를 따라 잡지 못할때 발생한다.

BUFFER 전략

  • DROP_LATEST
    • 버퍼가 가득찬 시점에 버퍼 내에서 가장 최근에 버퍼로 들어온 데이터를 DROP 함
    • DROP 된 빈 자리에 버퍼 밖에서 대기하던 데이터를 채움
  • DROP_OLDEST
    • 버퍼가 가득찬 시점에 버퍼 내에서 가장 오래전에 (먼저) 버퍼로 들어온 데이터를 DROP 함
    • DROP 된 빈 자리에 버퍼 밖에서 대기하던 데이터를 채움

DROP 전략

  • 버퍼에 데이터가 모두 채워진 상태가 되면 이후에 생성되는 데이터를 버리고(DROP), 버퍼가 비워지는 시점에 DROP 되지 않은 데이터부터 다시 버퍼에 담는다.

LATEST 전략

  • 버퍼에 데이터가 모두 채워진 상태가 되면 버퍼가 비워질 때까지 통지된 데이터는 버퍼 밖에서 대기하며 버퍼가 비워지는 시점에 가장 나중에(최근에) 통지된 데이터부터 버퍼에 담는다.

 

 

 

 


출처 : 인프런 (Kevin의 알기쉬운 RxJava) 

 

Kevin의 알기 쉬운 RxJava 1부 강의 | Kevin - 인프런

Kevin | 리액티브 프로그래밍이라는 진입 장벽을 넘고 싶으신가요? Kevin의 알기 쉬운 RxJava가 그 벽을 넘을 수 있는 힘을 키워드리겠습니다., 리액티브 프로그래밍, 알기 쉽고 확실하게 배워보세요!

www.inflearn.com

 

«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함
최근에 올라온 글
Total
Today
Yesterday