Push или Pull для сервера автоматизации, работающего в режиме реального времени?

StackOverflow https://stackoverflow.com/questions/58757

Вопрос

В настоящее время мы разрабатываем сервер, с помощью которого клиент запрашивает интерес к изменениям конкретных элементов данных, и когда эти данные изменяются, сервер отправляет данные обратно клиенту.На работе ведутся бурные споры о том, будет ли клиенту лучше опросить эти данные.

Какой метод передачи данных в среде, близкой к реальному времени, считается идеальным с точки зрения производительности, масштабируемости и сетевой нагрузки?

Обновлять:Вот Связь это дает пищу для размышлений относительно обновлений пользовательского интерфейса.

Это было полезно?

Решение

Вероятно, не существует идеального метода для каждой ситуации, но push обычно лучше и используется чаще.Это позволяет оптимизировать кэширование сервера и передачу данных, что повышает производительность и масштабируемость, а также немного сокращает сетевой трафик, избегая клиентских запросов и пустых ответов.Для сервера может быть важным преимуществом работать в своем собственном темпе и предоставлять клиентам данные, когда они будут готовы.

Отраслевые стандарты, такие как OPC, GID, поддерживают оба варианта.Сервер отправляет обновления подписанным клиентам, но клиент может извлекать некоторые редко используемые данные, не беспокоясь о подписке.

Другие советы

Пока клиент инициирует соединение (чтобы преодолеть проблемы брандмауэра и NAT), в любом случае все в порядке.

Если вам нужно отправить несколько разных типов данных, вы можете попросить клиента указать, какой тип ему нужен, но это необходимо только один раз для каждого соединения.Тогда вы сможете заставить сервер продолжать отправлять обновления в том виде, в котором они есть.

Было бы меньше сетевого трафика, если бы сервер отправлял обновления без того, чтобы клиент постоянно запрашивал обновления.

Что у вас есть на стороне клиента?Многие брандмауэры разрешают исходящие запросы, но блокируют входящие.Другими словами, pull может быть вашим единственным вариантом, если вы пользуетесь Интернетом, если только вы не рассылаете электронные письма.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top