Функции Azure - постоянный TCP

Я ищу способ правильно масштабировать функцию Azure, но у меня есть проблема.

У меня есть набор устройств IoT, которые отправляют данные в Azure по HTTP (для этого есть набор функций Azure, которые автоматически масштабируются)

Но теперь есть новое устройство IoT, которое отправляет данные через постоянные соединения TCP/IP, и, насколько я знаю, это не поддерживается функциями Azure.

У кого-нибудь есть идеи о том, как это реализовать?

Один вариант, который я думал, заключался в том, чтобы иметь виртуальную машину, обрабатывающую соединения TCP и отправляющую данные в очередь, чтобы функция могла извлекать из очереди масштабируемым образом.

Заранее спасибо, ура.

2 ответа

Решение

Если ваше устройство обменивается данными только через постоянное соединение TCP/IP, вам необходимо реализовать шлюз IoT. Шлюз IoT - это, по сути, приложение, которое запускается либо локально, либо в облаке, оно взаимодействует с 1 или несколькими устройствами IoT, после чего шлюз может подключаться и взаимодействовать с такой службой, как концентратор IoT Azure. Оттуда вы можете отправлять события в IoT-концентратор Azure, а затем обрабатывать эти события в облаке, используя что-то вроде Azure Stream Analytics, чтобы затем отправлять их в концентраторы событий или в очередь шины обслуживания, например. Затем, попав в очередь, вы можете написать функцию Azure, которая будет запускаться для обработки этих событий по мере их поступления.

Невозможно открыть постоянное соединение TCP/IP с функцией Azure. Функции Azure являются бессерверными вычислениями и построены так, чтобы быть управляемыми событиями по своей природе и в краткосрочной перспективе. Рекомендуется, чтобы функция Azure работала не более 5 минут в течение одного выполнения.

Я думаю, что ваш лучший выбор - это отделение от протоколов устройства; функции могут связываться с концентраторами событий, и вы можете помещать свои прокси в контейнеры (довольно легко размещать и масштабировать их в App Svcs или AKS).

Таким образом, хрупкую часть (прокси) легко проверить.

Что-то вроде fanout.io может работать в зависимости от протокола. Если это MQTT, то использование Azure IoT Hub может иметь смысл.

Другие вопросы по тегам