- 비동기/동기?
동기 : 이전 작업이 끝나기 전엔 다음 작업 실행 불가
비동기 : 이전 작업이 끝나기 전에 다음 작업 실행 가능
- 서버가 동기/비동기?
동기 : 하나의 요청을 하나의 쓰레드에 할당
비동기 : 여러 개의 요청을 여러 개의 쓰레드에서 작업
- 예시
1. 동기 서버의 경우
- 쓰레드풀에 8개의 쓰레드를 할당하였다고 가정하고, 하나의 요청에 대한 응답 시간이 1분이 걸린다고 하였을 때
1분 내에 8개의 요청이 오게 되면, 쓰레드풀이 꽉 차서 더 이상 요청을 받을 수 없는 상태(Thread pool hell?이라고 부르는듯)가 됨
2. 비동기 서버의 경우
- 쓰레드풀의 개수에 상관없이, 하나의 쓰레드가 여러 개의 요청을 처리하기 때문에 각 요청에 걸리는 시간은 늘어날 수 있지만, 동기 서버와 같이 쓰레드풀이 가득 차서 더 이상 요청을 받을 수 없는 상태가 되지는 않음