티스토리 뷰
- I/O : 컴퓨터 시스템이 외부의 입출력 장치들과 데이터를 주고 받는 것
- 파일 I/O, DB I/O, 네트워크 I/O 등
3.1 Blocking I/O
- 하나의 스레드가 I/O에 의해서 차단되어 대기하는 것
- 멀티스레딩 기법으로 보완 가능하나 아래와 같은 문제점 존재
- 컨텍스트 스위칭으로 인한 스레드 전환 비용
- 과다한 메모리 사용으로 오버헤드 발생할 수 있음
- 스레드 풀에서 응답 지연 발생할 수 있음
3.2 Non-Blocking I/O
- 작업 스레드의 종료 여부와 관계없이 요청한 스레드는 차단되지 않음
- 스레드 내부에 CPU를 많이 사용하는 작업이 포함된 경우에는 성능에 악영향을 줄 수 있음
- 사용자의 요청에서 응답까지의 전체 과정에서 Blocking I/O 요소가 포함된 경우에는 Non-Blocking의 이점을 발휘하기 어려움
3.3 Spring Framework에서의 Blocking I/O와 Non-Blocking I/O
- Blocking I/O 기반의 Spring MVC
- Non-Blocking I/O 기반의 Spring WebFlux
3.4 Non-Blocking I/O 방식의 통신이 적합한 시스템
- 대량의 요청 트래픽이 발생하는 시스템
- 저비용 고성능
- 마이크로 서비스 기반 시스템
- 수많은 I/O 지속적 발생
- 스트리밍 또는 실시간 시스템
- 무한 데이터 스트림 처리
- 단, 학습 난이도와 경험 있는 개발 인력 확보 용이성 고려 필요
'공부 > 스프링으로 시작하는 리액티브 프로그래밍' 카테고리의 다른 글
Part 02 | Project Reactor (0) | 2023.07.21 |
---|---|
Chapter 04 | 리액티브 프로그래밍을 위한 사전 지식 (0) | 2023.07.21 |
Chapter 02 | 리액티브 스트림즈(Reactive Streams) (0) | 2023.07.21 |
Chapter 01 | 리액티브 시스템과 리액티브 프로그래밍 (0) | 2023.07.21 |
Part 01 | 리액티브 프로그래밍(Reactive Programming) (0) | 2023.07.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크