Центр IoT Azure - сокращение объема загрузки / выгрузки данных - PullRequest
0 голосов
/ 28 декабря 2018

Я работаю с концентратором IoT Azure, и в настоящее время запущена тестовая среда.Однако мы используем подписку данных 4g (Mobile) для загрузки результатов измерений с наших устройств, и я много сделал для сокращения объема данных, которые мы собираем и загружаем каждые 10 минут.Однако при измерении потребления данных я все еще вижу довольно большие издержки.Мои данные сжимаются примерно на 300 байт, но после измерения данных с помощью NetBalancer я вижу, что через 1 день мое приложение отправило 1,2 МБ и получило 2,3 МБ.Я использую протокол MQTT, так как он должен занимать наименьшую площадь.

Мне кажется, что я не могу найти какой-либо наилучшей практики или аналогичных методов для сокращения данных, передаваемых по проводам с использованием концентратора IoT.Любая помощь высоко ценится!:)

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Вот несколько вещей, которые вы можете попробовать:

  1. Если вы отключаетесь после каждого сообщения, избегайте этого.Рукопожатие TLS может стоить до 10 килобайт, в то время как пинг "поддержание жизни" стоит всего 80 байтов, отправляемых каждую минуту.Переподключение после каждого сообщения часто неэкономично.
  2. Избегайте TLS в целом и используйте шлюз протокола между клиентом и IoTHub в качестве точки завершения TLS.(Это рискованно, но если вы можете зашифровать свою полезную нагрузку другим надежным способом, это может оказаться жизнеспособным вариантом)
  3. В соответствии с рекомендациями Itay, попробуйте альтернативные варианты сериализации, такие как буферы протокола или плоские буферы.Как правило, они имеют гораздо меньшие размеры, чем JSON
  4. . Убедитесь, что вы используете лучший алгоритм сжатия для своей полезной нагрузки.

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

0 голосов
/ 31 декабря 2018

Возможно, вы сможете уменьшить размер сообщения, сериализовав с помощью Буферы протокола (для C # доступны пакеты nuget).

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

Надеюсь, это поможет!

...