Помните, как во второй части Осел постоянно спрашивал Шрека, приехали они или нет? Делал он это чуть ли не каждую секунду, несмотря на отрицательный ответ
Этой узнаваемой сценой можно легко объяснить «асинхронный» механизм Polling, который встречается в системах
📌 Polling простыми словами
Polling (он же опрос) – периодическая отправка запросов от клиента к серверу с целью обновления информации. Если данные есть, сервер сразу отдает их. Цикл повторяется бесконечно, вне зависимости от ответа
Механизм создает иллюзию асинхронности путем периодической фоновой отправки синхронных HTTP-запросов: например, отправка GET-запроса каждые 5 секунд с клиента на сервер. Никакой магии!
Пример работы с Ослом и Шреком в комментах ⬇
💡Где используется?
Там, где нужно обновлять данные в а-ля реалтайм: чаты, новостные ленты, системы мониторинга
🔹 Пример из жизни
🤍В приложении для вызова такси polling можно использовать для обновления геопозиции клиента и водителя
🤍Сайт с новостями может раз в 10 секунд опрашивать сервер на предмет новостей
🤍В ненагруженном чате мы можем проверять статус пользователя (в сети или оффлайн)
👍 Плюсы
1. Просто реализовать
2. Из «асинхронных» механизмов наиболее понятный и простой
3. Можно контролировать частоту запросов
👎 Минусы
1. Холостые запросы создают бесполезную нагрузку на сервер
2. Под капотом это все же синхронный механизм, а значит есть задержки при получении данных
3. Не подойдет, если система нагруженная – если много пользователей, сервер от такого пинга приляжет поспать
💪 Старший брат Long Polling
У Polling есть «продвинутая версия» – Long Polling. Почему длинный? Когда клиент отправляет запрос на сервер, тот открывает соединение на какое-то время. Если данные будут, отправит их, если нет, не отправит
Так вместо 5 запросов за 5 секунд мы отправляем 1 запрос и держим соединение 5 секунд. Плюсы и минусы почти такие же, как выше
➡ Итог
Если вдруг спросят на собесе про эти штуки, или попадутся на проекте – не пугайтесь, все просто:
🤍Polling – раз в n-секунд опрашиваем сервер для обновления данных через HTTP-запросы
🤍Long Polling – при аналогичном опросе открывается соединение и держится n-секунд
Было полезно? Ставь лайк 👍
#полезное_системный_анализ
