728x90
반응형
- Blocking 방식
- 요청한 작업이 끝날 때까지 다른 작업 X 기다림
- = 하나의 Thread 요청 처리 → 처리함수 실행하면 제어권 함께 넘김
⇒ 해당 함수가 끝날 때까지 다른 함수 호출 X
- Non-Blocking 방식
- 요청한 작업이 수행되는 동안 다른 작업 O
- = 호출자가 함수 호출 → 제어권을 호출자가 가지고 있음
⇒ 다른 작업 수행 O
RestTemplate
- Multi-Thread + Blocking 방식
- Thread가 다 차는 경우 요청이 Queue에서 대기
- ⇒ 클라이언트 접속 수↑ (동시성 ↑) → CPU, 메모리 충분해도 Thread 부족 → 성능 ↓
- Thread ↑ → CPU, 메모리 성능 ↓
- Spring 5.0 이후 → WebClient 사용하는 것이 권장
Tomact
- Java 기반의 웹 애플리케이션 서버, SpringBoot의 기본 내장 컨테이너
- 동기적, 블로킹 I/O 모델 사용
- 요청마다 Thread 생성
WebFlux
- Spring 5.0에서 도입된 비동기 논블로킹 웹 프레임워크
- Reactive Streams 사양에 기반한 비동기 처리 모델 사용
WebClient
- WebFlux의 논블로킹 I/O 처리 모델에 맞게 설계된 HTTP 클라이언트
- Single Thread + Non-Blocking 방식
- core 당 1개의 Thread 사용
- RestTemplate의 비동기 대체제
Reactive Programming
- 데이터의 흐름(stream), 비동기 데이터 처리 관리하는 프로그래밍 패러다임
- Spring WebFlux와 같은 프레임워크에서 데이터를 Mono(단일 값) or Flux(다중 값) 형태로 처리
- 논블로킹 처리 → ↑ 성능 + 효율성
Netty
- 비동기 이벤트 기반의 네트워크 애플리케이션 프레임워크
- Java NIO(Non-blocking I/O) 기반으로 설계 → ↑ 동시성과 효율적인 리소스 사용 제공
728x90
반응형
'BE > Spring | SpringBoot' 카테고리의 다른 글
Spring Validation (0) | 2025.02.23 |
---|---|
스프링부트 개념정리(이론) (0) | 2024.04.29 |
[Spring Boot 3.x 를 이용한 RESTful Web Services 개발] 섹션 6. RESTful API 설계 가이드 (0) | 2024.04.29 |
[Spring Boot 3.x 를 이용한 RESTful Web Services 개발] 섹션 5. Java Persistence API 사용 (0) | 2024.04.29 |
[Spring Boot 3.x 를 이용한 RESTful Web Services 개발] 섹션 4. Spring Boot API 사용 (0) | 2024.04.29 |