我目前有一个处理来自Azure IOT Hub的遥测事件的应用程序。通过从IOT集线器触发Azure功能来完成事件的处理。
每个设备设置了几个处理规则/设置(当前大约为6个)。设置本质上只是一组简单的(字符串/布尔)属性。看到有几百设备,这些设置的数量会随着时间而爆炸。新设备的上载还创建了设置设置和默认设置的要求。
Azure功能启动以处理设备中的事件时,它需要加载该设备的设置,然后进行相应处理。
管理这些设置的最佳方法是什么?该功能启动时,主要重点是有效加载设置。其次,轻松更新设置。
据我所知,有以下几种选择:
在Azure表中存储单个设置。我已经实现了此功能,但是我担心当数百个设备访问Azure表时,它的伸缩性不好。我已经使用PartitionKey | RowKey作为DeviceId | SettingName。这将为每个设备创建一个分区
在Azure表中将设备的所有设置存储为JSON。这将需要解析JSON以获得单独的设置
由于设置数量的原因,我认为实际上无法在ApplicationSettings中存储单个设置
由于与上述相同的原因,我认为也无法存储设备的所有设置。
答案 0 :(得分:1)
听起来这些设置可能会更改,这意味着您要么需要:
关于它们的存储位置-使用Azure表或什至Azure Blob都可以使用。您可以将JSON设置存储在以设备ID命名的Blob中,并非常快速地检索这些设置。将它们存储在类似CosmosDB(已经是JSON文档存储库)的东西中也可以工作。所有这些都应该为您扩展,特别是如果您正在执行某种内存中缓存,因此您无需每次调用都读取设置。