Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure IoT集线器-从报告的设备孪生消息充斥集线器的设备中恢复_Azure_Azure Iot Hub - Fatal编程技术网

Azure IoT集线器-从报告的设备孪生消息充斥集线器的设备中恢复

Azure IoT集线器-从报告的设备孪生消息充斥集线器的设备中恢复,azure,azure-iot-hub,Azure,Azure Iot Hub,我有一个Azure IoT Hub应用程序,一台设备刚刚开始每隔一秒发送消息,指示报告的设备属性的更改。在几个小时内,当天的总信息量超过了5万条。当这个数字达到40k时,IoT集线器对所有客户的响应变得非常缓慢——不仅在设备关闭之前,而且在所有这些消息都设法通过系统节流之前,这似乎是在几个小时后或第二天早上 因此,如果发生这种类型的洪水,所有客户的整个系统都会因为速度缓慢而停止运行 这是一个设备缺陷,需要修复,但我想知道是否有办法——如果发生这种情况——让整个物联网中心恢复正常,而不是变慢?比如

我有一个Azure IoT Hub应用程序,一台设备刚刚开始每隔一秒发送消息,指示报告的设备属性的更改。在几个小时内,当天的总信息量超过了5万条。当这个数字达到40k时,IoT集线器对所有客户的响应变得非常缓慢——不仅在设备关闭之前,而且在所有这些消息都设法通过系统节流之前,这似乎是在几个小时后或第二天早上

因此,如果发生这种类型的洪水,所有客户的整个系统都会因为速度缓慢而停止运行


这是一个设备缺陷,需要修复,但我想知道是否有办法——如果发生这种情况——让整个物联网中心恢复正常,而不是变慢?比如踢出有问题的设备或重新启动集线器之类的东西。或者更好—有没有一种方法可以防止设备以超过每分钟x条消息的速度涌入集线器?

当有问题的设备开始向集线器发送垃圾邮件时,您可以建立一些逻辑来阻止它。一种方法可能是将所有twinChangeEvents路由到一个单独的端点,并编写一个Stream Analytics作业,将每个deviceId的消息分组,并将事件计数保持在X分钟的滑动窗口中。计数达到设置的阈值后,可以调用Azure函数禁用设备并发送通知

有一个警告,州政府:

如果变化率太高,或由于其他原因,如 内部故障时,IoT集线器可能只发送一个通知 包含所有更改


我不知道您的设备是否达到了该速率,但我认为这将是一种合适的方法来踢出违规设备。

在某个时候,一旦达到您购买的层和单位的限制,IoT中心将开始拒绝您的消息。现在,为了处理过多的消息,已达到节流或IoT集线器处理消息的速度较慢

根据以上链接中提供的文档:-

本文概述的示例解决方案提供了在当前消息计数超过设定阈值(例如,90%的允许消息)的情况下监控IoT集线器的能力,并在这种情况下自动将IoT集线器扩展到下一个容量单位


在一天结束时,您还需要自动缩小IoT中心的规模,以便在收到低流量时,IoT中心的成本不高。查看上面文章链接中的“缩小比例”部分。

物联网中心使用的比例层和单位数量是多少?它是S1-标准。另外-物联网集线器单元的数量:1尝试切换到S3,其节流限制约为S1的5倍。注意,价格是最高的,比如每台2500美元。是的,我想到了,但这不是一个真正的解决方案。这就像购买更多硬件以获得更快的速度。我需要解决问题的根源。设备发送消息的速度不应该如此之快,或者我应该能够让所有客户的IoT集线器的总体速度很快恢复正常。故障切换功能可能对您有所帮助,请参阅更多详细信息,