티스토리 뷰

Programming/기타

Reactive Programming이란?

weekyear 2021. 6. 14. 07:45

 

In computing, reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change.
('변화의 전파와 데이터 흐름'과 관련된 '선언적 프로그래밍' 패러다임이다.)

From 위키피디아
  • 변화의 전파와 데이터 흐름 : 데이터가 변경될 때 마다 이벤트를 발생시켜서 데이터를 계속적으로 전달한다.
  • 선언적 프로그래밍 : 실행할 동작을 구체적으로 명시하는 명령형 프로그래밍과 달리 선언형 프로그래밍은 단순히 목표를 선언한다.
명령형 프로그래밍 vs. 선언형 프로그래밍
 

명령형 프로그래밍 VS 선언형 프로그래밍

명령형 프로그래밍과 선언형 프로그래밍에 대한 비교를 어디선가 한 번쯤은 접해봤을 거라 생각합니다. 그리고 그 둘이 실제로 무엇을 의미하는지 검색을 해보셨다면 아마 아래와 같은 정의를

boxfoxs.tistory.com

리액티브의 개념이 적용된 예

  1. Push 방식 : 데이터의 변화가 발생했을 때 변경이 발생한 곳에서 데이터를 보내주는 방식
  • RTC (Real Time Communication)
  • 소켓 프로그래밍
  • DB Trigger
  • Spring의 ApplicationEvent
  • Angular의 데이터 바인딩
  • 스마트폰의 Push 메시지
  1. Pull 방식 : 변경된 데이터가 잇는지 요청을 보내 질의하고 변경된 데이터를 가져오는 방식
  • 클라이언트 요청 &서버 응답 방식의 애플리케이션
  • Java와 같은 절차형 프로그래밍 언어

리액티브 프로그래밍을 위해 알아야 될 것들

  • Observable : 데이터 소스
    • 지속적으로 변경이 가능한 데이터의 집합
  • 리액티브 연산자(Operators) : 데이터 소스를 처리하는 함수
  • 스케쥴러(Scheduler) : 스레드 관리자
  • Subscriber : Observable이 발행하는 데이터를 구독하는 구독자
  • 함수형 프로그래밍 : RxJava에서 제공하는 연산자(Operator) 함수를 사용
    • 변수가 필요 없는 순수 함수를 지향하는 프로그래밍

예시

  1. 데이터를 발행하고
  2. 데이터를 처리하고
  3. 데이터 구독해서 처리한다.
public static void main(String[] args) throws InterruptedException {
    Observable.just(100, 200, 300, 400, 500)
        .doOnNext(data -> System.out.println(getThreadName() + " : " + "#doOnNext() : " + data))
        .subscribeOn(Schedulers.io()) // 데이터의 발행과 흐름을 결정짓는 스레드를 결정
        .observeOn(Schedulers.computation()) // 발행된 데이터를 가공하고 처리하는 스레드를 결정
        .filter(number -> number > 300)
        .subscribe(num -> System.out.println(getThreadName() + " : result : " + num));

    Thread.sleep(500); // ioThread로 동작을 시키면 main 함수가 바로 종료되버리기 때문에 0.5초 정도 기다리게 하여 함수 종료를 지연시킨다.
}

public static String getThreadname() { return Thread.currentThread().getName(); }

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함