본문 바로가기
CS/Network

[네트워크] 싱글스레드 서버와 멀티스레드 서버

by 테리는당근을좋아해 2020. 6. 28.

멀티스레드 서버

- 멀티스레드를 이용해 여러 사용자의 request와 response 처리

- 대부분의 웹 애플리케이션은 멀티스레드 기반

- 동기식 모델

- Spring

 

1) 동작 과정

(1) 웹 서버는 내부적으로 스레드 풀을 유지

(2) 클라이언트는 서버에 요청을 전달

(3) 스레드 풀 내의 각각의 스레드가 blocking I/O 등의 클라이언트 요청을 처리하고 응답

 

 

 

싱글스레드 서버

- 싱글 스레드 기반의 이벤트 루프 구조로 멀티 스레드 기반 모델보다 더 동시적으로 다수의 클라이언트 요청 처리 가능

- 멀티스레드 기반의 모델보다 상대적으로 적은 스레드가 필요(자원의 효율)

- 비동기식 모델

- Node.js

 

1) 동작방식

(1) 서버 내부에 단일 스레드가 무한 루프를 돌며 클라이언트의 요청을 대기(이벤트 루프 구조)

(2) 클라이언트는 서버에 요청을 전달

(3) 서버는 복잡한 작업이나 Blocking I/O 등의 처리는 스레드 풀의 스레드에 작업을 넘기고 다음 클라이언트의 요청을 받음

(4) Blocking I/O 등의 작업을 요청받은 스레드는 작업을 수행 후 callback function을 통해 이벤트 루프 내 단일 스레드에 응답

(5) 이벤트 루프 내 단일 스레드는 해당 클라이언트에 응답을 전달

댓글