管理Azure功能中的大量应用程序设置



我目前有一个处理Azure IOT集线器遥测事件的应用程序。事件的处理是通过从IOT集线器触发Azure功能来完成的。

每个设备设置了几个处理规则/设置(目前约为6个(。设置本质上只是一组简单的(string/bool(属性。由于有几百个设备,这些设置的数量会随着时间的推移而激增。新设备的安装还要求提供设置和默认设置。

当Azure功能启动以处理设备中的事件时,它需要加载该设备的设置,然后进行相应的处理。

管理这些设置的最佳方式是什么?主要关注的是在功能启动时有效加载设置。其次,轻松更新设置。

据我所知,有以下几种选择:

  • 将各个设置存储在Azure表中。我已经实现了这一点,但我担心当数百台设备访问Azure表时,它不会很好地扩展。我已将PartitionKey|RowKey用作DeviceId|SettingName。这将为每个设备创建一个分区

    • 将设备的所有设置作为JSON存储在Azure表中。这将需要解析JSON以获得单独的设置

    • 由于设置的数量,我认为在ApplicationSettings中存储单个设置是不可行的

    • 由于与上述相同的原因,我认为存储设备的所有设置也是不可行的。

听起来这些设置可能会更改,这意味着您需要:

  1. 每次函数启动时读取它们
  2. 读一遍,然后把它们存储在内存中。然后,如果它们发生了更改,您需要一个过期策略来刷新它们(除非您有某种方式收到更改通知(。也许有点像MemoryCache
  3. 将设备设置与消息一起发送——这是可能的,还是单独管理

至于它们的存储位置——使用Azure表甚至Azure Blob都可以。您可以将JSON设置存储在由设备id命名的blob中,并非常快速地检索这些设置。将它们存储在CosmosDB(这已经是一个JSON文档存储(中也可以。所有这些都应该适合您,尤其是当您正在进行某种内存缓存时,这样您就不需要每次调用都读取设置。

相关内容

最新更新