Justin의 개발 로그
article thumbnail

https://projectreactor.io/

효율적인 반응형 시스템 만들기

리액티브 코어

  • 완전 논-블로킹
  • 함수형 인터페이스, CompletableFuture, Stream, Duration과 직접적인 상호작용

 

[Duration ???]
나 : Reactive Core 에서 duration이 어떤 특징인지 설명해 줘.
 
 

GPT-4 :

Reactive Core, 특히 Project Reactor에서 Duration의 사용은 반응형 프로그래밍에서 시간 기반의 연산을 수행할 때 핵심적인 역할을 합니다. Project Reactor는 비동기 데이터 스트림 처리를 위한 Java 라이브러리 중 하나로, Reactor Core는 이 라이브러리의 중심적인 부분입니다. Duration은 이러한 반응형 프로그래밍 패러다임 내에서 다음과 같은 특징을 갖습니다:

  1. 시간 지연 (Time Delay): Duration을 사용하여 특정 시간만큼의 지연(delay)을 생성할 수 있습니다. 예를 들어, Mono.delay(Duration.ofSeconds(1)) 또는 Flux.delayElements(Duration.ofSeconds(1)) 같은 코드는 각각 1초 후에 데이터를 방출하거나, 스트림 내의 각 요소 사이에 1초의 지연을 추가합니다.
  2. 타임아웃 (Timeout): Duration은 데이터 스트림의 타임아웃을 설정하는 데 사용됩니다. 이는 특정 시간 동안 데이터가 방출되지 않으면 에러를 발생시키는 데 사용됩니다. 예를 들어, .timeout(Duration.ofMinutes(1))은 1분 동안 어떤 데이터도 수신되지 않으면 타임아웃 에러를 발생시킵니다.
  3. 주기적인 작업 (Periodic Tasks): 주기적으로 반복되는 작업을 스케줄링하기 위해 Duration을 사용할 수 있습니다. 예를 들어, Flux.interval(Duration.ofSeconds(1))은 1초마다 주기적으로 데이터를 방출하는 Flux를 생성합니다.
  4. 백프레셔와 윈도우 연산 (Backpressure and Windowing Operations): Duration은 백프레셔 관리 및 윈도우 연산에서도 중요한 역할을 합니다. 예를 들어, 특정 시간 동안 수집된 데이터를 그룹화하여 처리하려는 경우 Duration을 기반으로 윈도우를 생성할 수 있습니다.
  5. 데이터 흐름의 결합과 조절 (Combining and Throttling Data Flows): 여러 데이터 스트림을 결합하거나, 데이터 흐름의 속도를 조절하는 등의 고급 스트림 조작에 Duration을 사용할 수 있습니다. 예를 들어, throttleFirst나 sample 같은 연산자는 Duration을 사용하여 데이터 스트림의 처리 속도를 조절합니다.

이처럼 Duration은 반응형 프로그래밍에서 시간에 관련된 다양한 연산을 표현하고 제어하는 데 필수적인 역할을 합니다. 이는 비동기 데이터 스트림의 처리를 보다 정밀하고 유연하게 만들어 줍니다.

 

 

TYPED [0 | 1 | N] SEQUENCES

Reactor offers two reactive and composable APls, Flux [N] and Mono [0|1], which extensively implement Reactive Extensions.

 

[0, 1, N] 시퀀스로 분류된다.

리액터는 Reactive Extensions을 광범위하게 구현 Mono(0,1)와 Flux(N sequences)라는 두 개의 반응적(Reacdtive)이고, 조합 가능한 APIs를 제공한다.

 

NON-BLOCKING IO

마이크로서비스 아키텍처에 매우 적합한 리액터는 HTTP, TCP, UDP를 위한 백프레셔(배압처리)를 지원하는 네트워크 엔진을 제공한다.

 

 

 

 

 

 

 

 

 

지연 시간의 수호자

스케일-아웃은 지연 시간과 느린 마이크로서비스를 극복하기 위한 중요한 도구입니다. 클라우드 네이티브 앱과 서버리스 기능은 비동기 아키텍처를 통해 효과적인 확장 가능성이 더 높습니다. 비동기식 설계를 지원하기 위해 Reactor는 강력한 Netty 프레임워크 를 기반으로 로컬 TCP/HTTP/UDP 클라이언트 및 서버를 포함하여 비차단 및 백프레셔 지원 네트워크 런타임을 제공합니다 .

 

 

 

profile

Justin의 개발 로그

@라이프노트

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!