[section 4] Spring Web Flux(1) - 리액티브 프로그래밍

수경·2023년 1월 26일
0

코드스테이츠

목록 보기
49/57

Reactive System

클라이언트의 요청에 즉각적으로 반응하도록 구성된 시스템
Non-Blocking 으로 요청 스레드가 차단되지 않도록 함

  • Message Driven : 메시지 기반 통신

  • Elastic(유연성) : 요청량에 상관없이 일정한 응답성 유지

  • Resilient(탄력성) : 시스템 상 장애가 있더라도 응답성 유지

  • Responsive : 클라이언트의 요청에 즉각 응답

  • Maintainable : 즉각적인 응답이 지속 가능해야 함

  • Extensible : 클라이언트의 요청에 대한 처리량을 자동 확장/축소


Reactive Programming

리액티브 시스템에서 사용되는 프로그래밍 모델
Non-Block 통신

특징

  1. 선언형

  2. 데이터의 입력이 지속적으로 들어올 수 있음 = 데이터 변경 발생 ➡️ 이벤트

  3. 지속적으로 발생하는 데이터를 데이터 플로우로 인식, 자동 전달

용어

  • Publisher : 데이터를 내보내는 주체

  • Subscriber : Publisher가 emit한 데이터를 전달받아 소비하는 주체

  • Emit : Publisher가 데이터를 내보내는 것

  • Subscribe : 구독

  • Signal : Publisher가 발생시키는 이벤트

  • Operator : 리액티브 프로그래밍에서 어떤 동작을 수행하는 메서드

  • Sequence : Operator 체인으로 표현되는 데이터의 흐름

  • Upstream / Downstream : 특정 Operator를 기준으로 위/아래 일부 Sequence


Reactive Streams

리액티브 프로그래밍을 위한 표준 사양 (명세), 인터페이스로 정의

컴포넌트

  1. Publisher : 데이터 소스로부터 데이터를 내보내는 주체

    • subscribe : 데이터 수신 여부, 호출되지 않으면 Publisher가 데이터를 내보내는 프로세스를 시작하지 않음
  2. Subscriber : Publisher가 emit한 데이터를 소비하는 주체

    • onSubscribe: 구독 시작 시 호출, Publishesr에게 요청할 데이터 개수 지정 / 구독 해지
    • onNext : emit 시 호출, emit된 데이터를 전달받아 소비할 수 있음
    • onError : emit된 데이터 전달 시 에러 발생하면 호출
    • onComplete : emit 정상 완료 후 처리할 작업 수행
  3. Subscription : 구독 자체

    • request : 데이터 개수 요청
    • cancel : 구독 해지
  4. Processor -> Subscriber와 Publishser 상속

구현체

  • Project Reactor
  • RxJava
  • Java Flow API
  • 기타 리액티브 확장 (Reactive Extension)
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글