Web/NetWork

[NetWork] 폴링(Polling)이란?

usingsystem 2022. 8. 25. 11:35
728x90

폴링은 리얼타임 웹을 위한 기법으로, 일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식을 말한다.

 

이렇게 서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간을 위해 필수적인 persistent connection이 불가능하기 때문이다.

클라이언트가 서버에 특정 요청을 하면 서버가 응답해준 후 연결이 끊어지는게 HTTP의 특징이기 때문이다.

따라서 실시간 서비스라고 불리는 서비스들 대부분이 실시간이 아니다. 실시간으로 변하는 야구 중계 같은 경우, 브라우저에서 5초 단위로 서버에 요청을 보내 업데이트 하는 방식으로 구현된다. 

 

폴링을 위키피디아식으로 다시 정의해보면 

폴링이란 하나의 장치(혹은 프로그램)가  충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치 (또는 프로그램)의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식을 말한다. 

 

Loop()문 내에서 반복적으로 외부 입력을 감시하는 문법으로 구현된다.

 

하지만 폴링에는 문제점이 있다.

1. 폴링의 주기가 짧으면 서버의 성능에 부담이 간다. (오버헤드/트래픽)

2. 주기가 길면 실시간성이 떨어진다.

 

해결 방법(다른 comet)

comet을 구현 (실시간 웹을 구현하기 위해 만들어진 기술들을 지칭)

- 롱폴링 기법 : 서버측에서 접속을 열어두는 시간을 길게 한다. 이벤트가 발생하면 바로 응답이 이루어짐.

- 스트리밍 방식  : 웹접속을 계속 열어두고 발생할때마다 부분적으로 브라우저에 응답

 

출처 -  https://etloveguitar.tistory.com/61

 

폴링(polling)이란? (comet)

폴링은 리얼타임 웹을 위한 기법으로, 일정한 주기(특정한 시간)을 가지고 서버와 응답을 주고 받는 방식을 말한다. 이렇게 서버와 응답을 주고 받는 이유는 웹이 태생 자체부터 실시간을 위해

etloveguitar.tistory.com

 

폴링

 

리얼타임 웹을 위한 기법으로 일정한 주기(특정한 시간)를 가지고 서버와 응답을 주고받는 방식이 폴링 방식이다.

 

ex) 실시간으로 변하는 야구중계 같은 데이터가 있다면 브라우저에서 5초 단위로 서버에 요청을 보내 업데이트하는 방식(네이버 실시간 문자중계 같은거?)

 

  • 만약 정보가 변하지 않으면 리소스를 낭비하고 오버헤드/트래픽이 발생한다.
  • Ajax Polling이라고도 불리는데 주로 Ajax호출을 사용하기 때문이다.
  • 또한 서버에서 데이터가 오지 않았는데 추가적으로 여러번 요청이 오게 되면 이전 데이터는 쓸모 없는 데이터가 되버린다. setTimeout같은 타이머를 이용해서 일정한 시간 간격으로 XMLHttpRequest를 보내 구현한다.
  • 하지만 이 폴링기법은 두 가지 문제가 있는데, 폴링 주기에 관한 문제로 주기가 짧으면 서버의 성능에 부담이 가고, 죽기가 길면 실시간 성능이 약간 떨어지는 문제가 있다.

 

해결법

 

1) comet을 구현하는 방법

 

1-1) 롱폴링기법

 

서버 측에서 접속을 열어두는 시간을 길게하는 방식.

이벤트가 발생(변경된 데이터가 있을 때만 응답)하면 바로 응답이 이루어지기 때문에 실시간성이 아주 높으며,스트리밍방식과 달리 웹브라우저 환경에 관계없이 사용할 수 있기 때문에 흔히 사용하는 방식

 

ex) 브라우저가 서버로 요청을 보내면 서버는 요청한 데이터가 변경되었을때만 응답을 보낸다.

Transfer-Encoding : chunked 같은 응답을 반환해서 커넥션을 유지하여 동작한다

만약 커넥션이 끊겼다면 클라이언트는 다시 서버에 연결을 요청한다

이러한 방식은 실시간으로 응답받는 경우에 적당하고 서버의 부하도 줄여주지만 데이터가 자주 바뀌는 경우(대용량 채팅)에는 한명의 유저가 채팅을 입력할 경우 엄청난 수의 변경 호출이 일어나서 적합하지 않습니다. 또한 폴링과 롱폴링 모두 오랫동안 연결되어 있는 커넥션을 최적화 하지 못하는 문제가 있다. 이 방식을 위해서는 연결된 커넥션과 요청 리스트들을가지고 있어야 한다.

 

1-2) 스트리밍 방식

하나의 웹 요청에 대해 웹 접속을 계속 열어두고, 새로 이벤트가 발생하면

발생할 때마다 부분적인 응답으로 브라우저로 보내는 방식

 

출처 -   https://kkukkukku.dev/69

 

폴링(Pollong), 롱폴링(Long-Polling) 개념 정리

폴링 리얼타임 웹을 위한 기법으로 일정한 주기(특정한 시간)를 가지고 서버와 응답을 주고받는 방식이 폴링 방식이다. ex) 실시간으로 변하는 야구중계 같은 데이터가 있다면 브라우저에서 5초

kkukkukku.dev

 

728x90