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
반응형
김앩옹