我目前正在一个平台上工作,该平台有大约50,000台设备连接到Azure IOT中心。由于这些设备的分区不平衡,我们遇到了性能问题。基本上,如果一个设备运行在一个包含更多设备的给定分区中,那么与另一个包含较少设备的分区相比,它的性能较差。我们已经为IOT中心配置了最大数量的分区(32),但我们仍然遇到这个问题,太多的设备驻留在同一个分区中。据我所知,分区分配是基于设备ID的,在我们的例子中是一个ID,在幕后有一个哈希算法来决定设备将驻留在哪个分区。
我们已尝试使用未记录的.NET Framework API EventHubPartitionKeyResolver.ResolveToPartition(在.NET Core中已删除)解决此问题,该API基本上对输入(设备ID)运行哈希算法,并返回它将驻留的分区。有了这个,我们可以继续生成一个新的设备ID,直到它福尔斯一个我们知道不那么拥挤的分区。这类工作,但不是最佳的。
我想知道是否还有其他人遇到过物联网中心分区不平衡的问题,如果是的话,你是如何处理的。
1条答案
按热度按时间bzzcjhmw1#
一种方法是,当设备配置服务(DPS)提供的内置策略不满足场景要求时,我们可以使用自定义allocation策略来定义您自己的分配策略。自定义分配策略给予您对如何将设备分配给IoT集线器的更多控制权。通过使用自定义分配策略,您可以在设备预配服务(DPS)提供的内置策略不满足场景要求时定义自己的分配策略。
另一种方法是修改设备ID以控制分区分配。通过创建多个IoT集线器并将设备定向到不同的集线器,手动将设备分配到特定分区。a