Регулировка скорости конфигурации MQTT

360
Alex Ryan

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

Моя конфигурация

Используя MQTT, у меня есть один производитель, публикующий сообщения в теме, и потенциально несколько потребителей подписываются на эту тему. Производитель может создавать сообщения с определенной максимальной скоростью. Каждый потребитель хочет обрабатывать сообщения со скоростью, уникальной для этого отдельного потребителя. Если потребитель получает сообщения со скоростью, превышающей скорость обработки, он может просто выбросить сообщения.

Моя забота

Например, у меня может быть производитель, который может выдавать изображения со скоростью, скажем, 100 изображений в секунду, но мои два потребителя могут потреблять их только со скоростью 8 в секунду и 5 в секунду соответственно. Для сохранения сетевых ресурсов оптимальная скорость публикации здесь будет составлять 8 изображений в секунду.

Моя мысль

Один из способов сделать это - подключить производителей и потребителей к общей услуге «согласования ставок», целью которой является изменение скорости, с которой издатель отправляет сообщения в общую тему.

Вопрос

Должен ли я рассмотреть возможность использования другого протокола для этой цели или есть что-то еще общее, что я должен рассмотреть, чтобы помочь мне решить эту проблему и решить мою проблему?

1
@PimpJuiceIT: я пытаюсь сохранить ресурсы (особенно пропускную способность сети, а также память и процессор), используя только то, что необходимо, и пытаюсь выяснить, существует ли существующий протокол, который поможет мне сделать это, или если мне придется изобрести свой собственный. Ключевым ограничением является то, что клиенты нуждаются в самой последней возможной информации и отбрасывают любые сообщения, полученные до последнего. Я хочу избежать отходов. Если издатель публикует слишком быстро, мне нужен метод, чтобы клиенты могли замедлить его до определенной скорости. Alex Ryan 6 лет назад 0
@PimpJuiceIT: наши потребности очень специфичны. У потребителей должно быть самое последнее изображение, отправленное производителем. Клиентам требуется гораздо больше времени для обработки изображения, чем скорость, с которой изображения могут быть получены, но время обработки каждого потребителя варьируется. У нас обязательно должна быть возможность для потребителей сообщить производителю скорость, с которой они хотели бы получать изображения, а для производителя решить, какова оптимальная скорость. Без этого мы тратим ресурсы, которые затем не могут быть использованы для других вещей, которые нам нужно сделать. Я не вижу, как протокол MQTT «просто справляется с этим для меня». Alex Ryan 6 лет назад 0
@PimpJuiceIT Это не ограничение клиента. Это жесткое, быстрое и неизменное требование. Это необходимость. Если технология не удовлетворяет потребности, необходимо найти обходной путь. MQTT - это протокол обмена сообщениями низкого уровня. Моя интуиция заключается в том, что, если существует протокол согласования скорости, это более общий протокол более высокого уровня, чем MQTT, который является лишь одним из многих способов сделать pubsub. Вопрос был переписан кем-то, кто предполагал, что решение проблемы лежит в протоколе MQTT, но это вряд ли ИМХО. Alex Ryan 6 лет назад 0
Итак, вы хотите использовать другой протокол, а не MQTT, так как этого недостаточно в вашей конфигурации - вы уже выполнили поиск в Google по запросу «* M2M или IOT-протоколы данных *» и выполнили свою домашнюю работу по этому вопросу? Что вы думаете после оценки, пока вы ждете, чтобы другие ответили иначе? Я с нетерпением ожидаю услышать, что вы найдете, что работает лучше всего в вашей среде, и вы подтверждаете, что это адекватно и достаточно для нужд. Pimp Juice IT 6 лет назад 0

0 ответов на вопрос