Могу ли я использовать MQTT для своего варианта использования?


Итак, у меня есть куча мобильных устройств (миллионы) и будет бэкенд-система. Мои потребности / случай использования:- 1. Для сбора данных с устройств и отправки в серверную часть. 2. Для отправки Push-сообщений из моей серверной системы на отдельные или группы устройств.

Итак, учитывая этот сценарий, имеет ли смысл использовать MQTT для связи между моим бэкендом и устройствами? Одна из путаниц, которая у меня есть, заключается в том, что в случае использования #1 устройства являются издателями, и некоторая система в backend будет подписчики, в то время как в случае использования #2 устройства являются подписчиками для push-сообщений, а серверная система будет издателем. Возможно ли это? Или я думаю об этом неправильно?

2 4

2 ответа:

Проработав ряд примеров (например, мобильная телеметрическая система с push-уведомлением), которые соответствуют этой схеме использования, я могу сказать, что MQTT может идеально подойти. Любой клиент MQTT может выступать как издателем, так и потребителем, нет никакого различия.

Вам просто нужно будет спроектировать структуру темы в соответствии с данными, которые вы отправляете в любом направлении, но это не должно быть сложно.

В целом, MQTT идеально подходит для вашего варианта использования #1 и варианта использования #2.

Пожалуйста, имейте в виду, что вы, вероятно, получите проблемы такого масштаба с бэкенд-подписчиками, потому что нет (насколько я знаю) библиотек MQTT, которые могут обрабатывать такую огромную пропускную способность.

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

Здесь приводится интересная дискуссия о Список рассылки MQTT по этой теме.