Управление большим количеством параметров приложения в функциях Azure - PullRequest
0 голосов
/ 08 ноября 2018

В настоящее время у меня есть приложение, которое обрабатывает события телеметрии из Azure IOT Hub. Обработка событий выполняется путем запуска функций Azure из концентратора IOT.

Для каждого устройства установлено несколько правил / настроек обработки (в настоящее время около 6). Настройки - это просто набор простых (string / bool) свойств. Видя, что имеется несколько сотен устройств, количество этих настроек со временем увеличивается. Подключение новых устройств также создает требование для обеспечения настроек и значений по умолчанию.

Когда функция Azure запускается для обработки событий с устройства, ей необходимо загрузить настройки для этого устройства и затем обработать их соответствующим образом.

Каков наилучший способ управления этими настройками? Основной упор делается на эффективную загрузку настроек при запуске функции. Во-вторых, простое обновление настроек.

Насколько я понимаю, есть следующие варианты:

  • Сохранение отдельных настроек в таблицах Azure. Я реализовал это, но обеспокоен тем, что он не будет хорошо масштабироваться, когда сотни устройств получат доступ к таблице Azure. Я использовал PartitionKey | RowKey как DeviceId | SettingName. Это создаст раздел на устройство

    • Сохранить все настройки для устройства в формате JSON в таблицах Azure. Для этого потребуется разбор JSON для получения индивидуальных настроек

    • Сохранение отдельных настроек в ApplicationSettings на самом деле невозможно, я думаю из-за количества настроек

    • Сохранение всех настроек устройства, по-моему, также невозможно по той же причине, что и выше.

1 Ответ

0 голосов
/ 08 ноября 2018

Похоже, что эти настройки могут измениться, что означает, что вам нужно:

  1. Читайте их каждый раз при запуске функции.
  2. Прочитайте их один раз и сохраните в памяти. Тогда вам потребуется политика истечения срока действия, чтобы обновить их, если они изменились (если только у вас нет способа получить уведомление об изменениях). Возможно что-то вроде MemoryCache .
  3. Отправка настроек устройства с вашими сообщениями - это возможно, или они управляются отдельно?

Что касается того, где они хранятся - с помощью таблиц Azure или даже BLOB-объектов Azure будет работать. Вы можете сохранить настройки JSON в BLOB-объекте, названном идентификатором устройства, и получить эти настройки очень быстро. Хранение их в чем-то вроде CosmosDB (который уже является хранилищем документов JSON) также будет работать. Все это должно масштабироваться для вас, особенно если вы выполняете какое-то кэширование в памяти, поэтому вам не нужно читать настройки при каждом вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...