Завжди підключений MQTT і завантаження даних 4G


10

Я працюю над проектом IoT, в якому беруть участь тисячі клієнтів MQTT, які підключені до брокера (комара) через маршрутизатор / модем 4G / WiFi. До одного і того ж маршрутизатора підключено менше 10 клієнтів, а маршрутизатори надходять з різних місць (різних міст).

Зараз у нас дуже мало клієнтів, і вони завжди підключені до брокера. Я знаю з цієї дискусії, що проблем не буде навіть тоді, коли вони виростуть до 1000+ одиниць.

Моє запитання щодо навантаження на трафік на 4G-з'єднанні. Кінцевий користувач побоюється споживання даних із усіма тими "каналами", які відкриваються та не використовуються. Наскільки я розумію, коли немає жодної активності, надсилаються лише пакети, що зберігаються в живих , хоча я не можу точно знайти цю інформацію в документації на MQTT.

Чи можу я припустити, що трафік, коли жодних пакетів не публікується, є незначним?

Відповіді:


6

Специфікація MQTT перераховує деталі пакетів PINGREQ і PINGRESP, які складають транзакцію в режимі "живого".

Кожен має розмір всього 2 байти, тому для повної збереженої події використовується всього 4 байти. Оскільки ви можете контролювати, наскільки часто надсилаються постійні пакети для кожного клієнта, виходячи з того, наскільки швидко вам потрібно знати, що з'єднання впало, ви маєте повний контроль, скільки даних використовується, коли жодне повідомлення фактично не публікується.

Якщо ви хочете ще більше зменшити навантаження даних, у вас може бути окремий брокер, який працює перед маршрутизатором 4G, до якого підключаються 10 пристроїв, а потім з'єднаний з центральним брокером. Це призведе до зменшення кількості пакетів, що зберігаються в живих, до 1 на 4G маршрутизатор, а не до 1 на клієнта. Це має перевагу в тому, що 10 локальних пристроїв можуть продовжувати передавати повідомлення між собою, якщо посилання знижується, і ви можете використовувати збережені повідомлення / Останні повідомлення про волю та заповіт для відстеження, коли окремі клієнти знижуються.


Використання проміжного брокера - хороша порада, навіть боюся, що він не вписується в даному конкретному випадку. Корисно знати, хоча!
Марк

У будь-якому разі я знав поведінку PINGREQ / RESP, але те, що я не знайшов, - це те, що вони є єдиними пакетами, що обмінюються, коли немає реальної активності (тобто, ініційованої програмами користувачів). Я міг би зробити це з вашої відповіді, але документи, здається, не прямо говорять про це.
Марк

Таймер збереження живлення скидається щоразу, коли приймається пакет, я не можу пригадати, де в специфікації це сказано вгорі моєї голови
hardillb

2
Просто хотілося зазначити, що пропозиція запровадити локальний брокер має ще більше сенсу, якщо ми не говоримо про 2 байти на повідомлення, але через TCP / IP це більше як 42 байти на повідомлення, так що його 84 за один цикл пінгу.
xwoker

1
@Mark Те, що лише пакети Ping - це єдине, що надсилається, якщо повідомлення не надсилаються, мається на увазі у реченнях після цієї таблиці: docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/…
hardillb
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.