반응형

nonblockingIO 3

Blocking I/O와 Non-Blocking I/O: 개념과 WebFlux에서의 활용

Blocking I/O와 Non-Blocking I/O는 시스템의 성능과 효율성을 결정짓는 중요한 개념입니다. 특히, Spring WebFlux는 Non-Blocking I/O를 기반으로 설계되어 대량의 요청을 효율적으로 처리할 수 있도록 돕습니다. 이 글에서는 두 방식의 차이점과 활용 방안을 살펴보겠습니다.1. Blocking I/O란?Blocking I/O는 요청 스레드가 I/O 작업이 완료될 때까지 대기하는 방식입니다. 이는 간단하고 직관적이지만, 대량의 요청을 처리할 때 다음과 같은 문제를 야기합니다:스레드 대기: 하나의 요청이 완료될 때까지 다른 요청은 대기 상태에 놓입니다.컨텍스트 스위칭 비용: 다수의 스레드가 생성되면, CPU가 작업 전환에 많은 시간을 소비하게 됩니다.자원 낭비: 유휴 상태..

[WebFlux 심층 분석] 리액티브 스트림즈의 핵심 개념과 구현 전략

리액티브 스트림즈(Reactive Streams)는 비동기적이고 Non-Blocking 방식으로 데이터 스트림을 처리하기 위한 표준입니다. 이 표준은 데이터 전송의 효율성을 높이고, 시스템 간의 느슨한 결합을 유지하면서 데이터 흐름을 관리할 수 있도록 설계되었습니다. 리액티브 스트림즈의 주요 구성 요소Publisher (발행자)데이터를 생성하고 제공하는 역할Subscriber에게 데이터를 전달Subscriber (구독자)Publisher로부터 데이터를 받아 처리하는 역할데이터를 수신하고 필요한 작업 수행SubscriptionPublisher와 Subscriber 간의 연결 관리데이터 요청 개수 지정 및 구독 취소 기능 제공ProcessorPublisher와 Subscriber의 기능을 모두 가진 중간 처..

[WebFlux 완전 정복] 리액티브 시스템과 리액티브 프로그래밍의 핵심 개념 및 구현 전략

리액티브 시스템과 리액티브 프로그래밍은 현대 소프트웨어 아키텍처에서 중요한 패러다임으로 자리 잡고 있습니다. 이 접근 방식은 대규모 데이터 처리와 실시간 응답성이 요구되는 애플리케이션에 특히 유용합니다. 이 글에서는 리액티브 시스템의 핵심 원칙과 리액티브 프로그래밍의 주요 개념을 상세히 살펴보겠습니다. 리액티브 시스템의 핵심 원칙리액티브 시스템은 The Reactive Manifesto에 정의된 네 가지 핵심 특성을 기반으로 합니다:Responsive (응답성): 시스템은 가능한 한 빠르게 응답해야 합니다. 응답성은 사용자 경험의 기본이며, 문제를 신속하게 감지하고 효과적으로 처리할 수 있게 합니다.Resilient (회복성): 시스템은 장애 상황에서도 응답성을 유지해야 합니다. 이는 복제, 격리, 위임..

반응형