Получи случайную криптовалюту за регистрацию!

Pull, poll, pool, spool Есть несколько терминов, которые для | Советы разработчикам (python и не только)

Pull, poll, pool, spool


Есть несколько терминов, которые для русского уха звучат одинаково:

1. pull - с английского переводится как "тянуть". Идет в паре с термином push.

Как правило, термином pull обозначают команду получения данных с сервера. Соответственно, push отправляет их на сервер.

Ещё pull может подразумевать режим, когда получатель данных сам стягивает их к себе из источника. В случае же push режима, источник данных самостоятельно засылает их получателю.

Термин применяется, например, когда мы говорим о методике сбора метрик работы приложения.

2. poll, polling - опрос.

Означает необходимость повторять вызовы для получения данных. Это может быть системный вызов poll, повторные запросы к базе данных или удаленному серверу.

В случае HTTP API клиент производит периодический опрос сервера на предмет наличия новых данных. В противоположность этому, при использовании же websockets, между клиентом и сервером есть постоянно соединение по которому передаются сообщения Если же используется webhook, то сервер сам соединяется с нашим приложением по HTTP для уведомления о наличии новых данных. В зависимости от реализации, такой запрос может содержать сами данные или только уведомление об их наличии.

Так же есть режим long polling, который от обычного polling отличается тем, что при отсутствии новых данных сервер не возвращает пустоту сразу, а ещё какое-то время держит соединение открытым.

Эти термины применяются при разработке веб приложений, платежных сервисов, телеграм-ботов и т.п.

3. pool - обычно означает паттерн "Объектный пул", когда мы не создаем объекты заново, а переиспользуем ранее созданные. см. также https://t.me/advice17/19

4. spooling — спулинг, буферизация задач.

Технология, когда мы не сразу отправляем задачи на обработку между устройствами, а сначала собираем в каком-то промежуточном буфере. Является комбинацией очереди и буфера.

Применяется, например, когда идет речь о выводе на печать.

Дополнительные материалы:

* https://man7.org/linux/man-pages/man2/poll.2.html
* https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-prsod/7262f540-dd18-46a3-b645-8ea9b59753dc
* https://git-scm.com/docs/git-pull
* https://prometheus.io/docs/introduction/faq/#why-do-you-pull-rather-than-push