OTHER

[NETWORK] Polling / Long Polling / Streaming

집한구석 2021. 6. 10. 19:28
728x90

많이 들어봤지만 개념을 몰라서 정리


Polling

https://d2.naver.com/helloworld/1052 참고

정의

  • Client가 서버에 주기적으로 Request를 보내는 기법
  • 주기적으로 Client가 처리해야할 이벤트나 받을 데이터가 있는지 체크

특징

  • 주기적으로 요청하기 때문에 응답 간격을 일정하게 가능
  • 요청 오는 폴링 요청이 처리 이후 다음 폴링이 이루어지기 전에는 언제오는지 몰라서 실시간 처리가 불가능
  • 리소스 낭비가 심함 (http는 단발성 통신이라, header가 무거움, 지속적으로 요청이 오면 서버에 부하 줄 수 있음)

장점도 있지만, 문제점이 더 크기에 Long Polling이 등장함


Long Polling

https://d2.naver.com/helloworld/1052 참고

정의

  • Client가 Request를 보내고 서버가 바로 Response를 보내지 않고, 이벤트가 발생하거나 보낼데이터가 생길 시 Response로 보내고 Connection을 종료하는 기법
  • Polling과 다른점은 Time out이 될때까지 무한정으로 기다림
  • Polling하고 비슷한 구조 이지만 Response 오는 시간이 길기 때문에 Long Polling 이라고 부름

특징

  • 항상 연결이 유지
  • 변경에 매우 민감하게 반응함, Client가 마치 실시간으로 데이터를 받는 느낌
  • 데이터가 주어지면 바로 Response가 되므로, 간격이 줄면 Polling보다 훨씬 많은 데이터를 전달할 수 있음
  • Long Polling은 Client들이 response를 받기 위해 서버에 연결되어 있는 형태라, 서버의 가용 연결 수에 따라서 가능 여부가 바뀜 (Tomcat은 쓰레드풀 사용하는데, 쓰레드풀의 쓰레드 가용 갯수가 100개이면, Tomcat하나당 100개의 클라이언트가 Long Polling 연결이 가능함 / 해당 예시를 보면 결국 서버 부하에 영향 우려)

Streaming

https://d2.naver.com/helloworld/1052 참고

정의

  • 서버에서 Client로 이벤트를 전달할때 해당 요청을 끊지않고 필요한 메세지만 보내기를 반복하는 기법
  • Polling이나 Long polling처럼 Connection을 종료하지 않아서 재연결이 필요 없음 (재연결에 대한 부하 X)

특징

  • 상태 변경이 매우 잦은 경우 유리
  • 한번의 요청에 다수의 응답이 가능함
  • Connection의 유효성 관리가 어려움 

 

'OTHER' 카테고리의 다른 글

[OTHER] 마이크로 서비스 아키텍처  (0) 2021.09.28
[OTHER] 모놀리식 아키텍처  (0) 2021.07.12
[OTHER] 블록킹 / 논블록킹과 동기 / 비동기  (0) 2021.06.07
[OS] 가상화  (0) 2021.06.05
[NETWORK] CNAME과 A RECODE  (0) 2021.06.02