webflux - R2DBC
·
카테고리 없음
이 이미지에서는 Spring WebFlux를 사용하는 서버가 클라이언트, API 서버, 그리고 관계형 데이터베이스(RDB)와 어떻게 통신하는지 설명하고 있습니다. 각 통신 과정에서 동기와 비동기 방식이 어떻게 적용되는지를 설명하는 흐름도입니다.1. 클라이언트 → Spring WebFlux (Reactor-Netty)비동기 통신: 클라이언트는 reactor-netty를 사용하여 Spring WebFlux 서버로 요청을 비동기 방식으로 전송합니다.Reactor-Netty: Spring WebFlux는 Reactor와 Netty를 기반으로 동작하며, 클라이언트로부터 들어오는 HTTP 요청을 비동기적으로 처리합니다. 클라이언트가 요청을 보내면, WebFlux 서버는 요청을 처리하는 동안 클라이언트의 연결을 유지..
Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 2
·
프레임워크/자바 스프링
간단한 spring boot 서버를 만들어 줍니다.`mvc` 서버라고 지칭하겠습니다.package com.example.mvc;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;import java.util.Map;@SpringB..
Spring Webflux 실습 - 1
·
프레임워크/자바 스프링
Spring WebFlux를 이용한 서버 구성Spring Framework를 이용해 실제 서버를 구성하는 과정에서, 각각의 Controller, Service, Repository가 WebFlux 스타일로 어떻게 구현되는지 알아보겠습니다.ControllerSpring WebFlux에서는 컨트롤러를 구현하는 두 가지 방식이 있습니다:Functional EndpointAnnotation Endpoint프로젝트 설정 (application.yml)먼저, Spring Boot 애플리케이션의 설정을 application.yml에 정의합니다. 다음은 애플리케이션의 이름과 로그 레벨을 설정하는 코드입니다:spring: application: name: webflux1logging: level: root..
Webflux - reactor 실습
·
프로그래밍 언어/스프링부트
Reactor Core를 이용한 Flux와 Mono 실습Reactor는 자바 비동기 프로그래밍을 위한 라이브러리로, 주로 Flux와 Mono라는 두 가지 기본 타입을 사용하여 데이터 스트림을 처리합니다. 이번 글에서는 Flux와 Mono의 차이를 간략히 설명하고, 예제를 통해 그 동작을 살펴보겠습니다.라이브러리 설정Reactor와 Spring Boot를 활용한 프로젝트에서는 reactor-core 라이브러리를 추가하여 Flux와 Mono를 사용할 수 있습니다. 아래는 필요한 라이브러리를 포함한 build.gradle 설정 예시입니다.plugins { id 'java' id 'org.springframework.boot' version '3.3.3' id "io.spring.dependen..
Webflux - reactor
·
프레임워크/자바 스프링
Reactive Streams와 Spring WebFlux: 비동기 스트림 처리의 핵심 이해비동기 논블로킹 I/O는 현대 웹 애플리케이션에서 매우 중요한 기술입니다. 특히, Reactive Streams는 비동기 데이터를 효율적으로 처리하기 위한 표준을 정의하고, 이를 통해 고성능의 서버 애플리케이션을 구축하는 데 필수적인 역할을 합니다. 이번 포스트에서는 Reactive Streams, Reactor, Spring WebFlux의 개념을 이미지 기반으로 설명하고, 이들이 어떻게 비동기 스트림 처리를 구현하는지 살펴보겠습니다.1. Reactive Stream 계층 구조Reactive Streams는 비동기 스트림 처리에서 non-blocking 방식과 back pressure 메커니즘을 통해 데이터를 효..
Webflux - spring mvc vs webflux
·
프레임워크/자바 스프링
spring mvc와 webflux에 대한 비교를 해보겠습니다.reactive stack은 spring boot2 버전부터 지원되고 있습니다.Reactive StackReactive Stack은 비동기적이고 논블로킹 방식으로 작동하는 스택입니다. Spring WebFlux는 이 스택의 중심에 있으며, Reactive Streams API와 Reactor 라이브러리를 기반으로 구축되었습니다. Reactive Stack은 다음과 같은 특징을 가지고 있습니다:논블로킹 I/O: 여러 요청을 병렬적으로 처리할 수 있어, 대규모 트래픽 처리에 적합합니다.멀티코어 프로세서 활용: 다중 코어를 효과적으로 사용하여 고성능을 달성할 수 있습니다.Netty 및 Servlet 3.1+와 같은 비동기 컨테이너에서 실행되며, 동..
webflux - CPU Bound vs IO Bound
·
프로그래밍 언어/스프링부트
software 성능을 분석하는 관점에서 cpu bound, I/O bound로 분류를 할 수 있습니다. spring webflux는 대량의 I/O 요청에 용이하게 설계 되어 있습니다. 이는 I/O Bound 작업에 가깝습니다. --- CPU Bound - CPU :   - CPU란 computer process unit의 약자입니다. 명령어를 기반으로 계산을 처리하는 중앙처리 장치입니다.      컴퓨터의 모든 작업은 CPU를 사용하게 됩니다. CPU 바운드 작업이란 단순히 CPU를 사용한 다는 것이 아니라 CPU를 중점적으로 사용하는 것을 말합니다. 예를 들면, 암호화, 압축 알고리즘 계산, 다수의 데이터에 대한 집계도 그 예시가 됩니다. 주로 CPU성능에 작업이 크게 좌지우지 됩니다. 밑에서부터 하..