Architecture Azure远程监控解决方案

Architecture Azure远程监控解决方案,architecture,azure-web-app-service,iot,azure-eventhub,azure-iot-hub,Architecture,Azure Web App Service,Iot,Azure Eventhub,Azure Iot Hub,我已经构建了一个基于物联网和工业4.0概念的测试应用程序,用于一些演示目的。以下是要点 我已经在Windows IoT(Raspberry)上构建了一个后台应用程序 Pi 3)收集传感器数据并推送到MS Azure云。那里 可以是多个同时的物联网设备 在Azure端,IoT集线器接收设备到云的消息 然后,数据被传递到流分析作业,该作业将数据传递到事件中心 Event hub在我的配置中有2个消费者组,这两个组都由Azure web app使用 WebJob使用默认消费者组存储历史数据,而MVC

我已经构建了一个基于物联网和工业4.0概念的测试应用程序,用于一些演示目的。以下是要点

  • 我已经在Windows IoT(Raspberry)上构建了一个后台应用程序 Pi 3)收集传感器数据并推送到MS Azure云。那里 可以是多个同时的物联网设备
  • 在Azure端,IoT集线器接收设备到云的消息
  • 然后,数据被传递到流分析作业,该作业将数据传递到事件中心
  • Event hub在我的配置中有2个消费者组,这两个组都由Azure web app使用
  • WebJob使用默认消费者组存储历史数据,而MVC 5应用程序使用图像中名为消费者组1的自定义消费者组
  • MVC 5应用程序使用
    信号器
    将数据传递给连接的用户以更新仪表板
  • 出于演示目的,这个场景似乎运行良好,我们有5到10个到CloudWebApp的同步连接
  • 以下是安装程序的体系结构图

    问题

    现在,在真实场景中,云应用程序可能会同时有许多用户,云也会发挥作用,并且它可以将webapp横向扩展到多个实例,在这种情况下,直接从Event Hub读取事件时可能会产生问题,并且并非所有web应用实例都会接收到所有事件,这是错误的,我认为这就是webapp没有直接从Event Hub读取消息的原因

    问题


    对上述体系结构进行什么样的/qucik更改才能最好地解决问题,并仍然向客户端显示实时事件?

    直接从事件中心读取事件数据受到这些限制

    每个事件中心的最大分区数为32

    请注意,使用者组中的单个分区在任何时候都不能连接超过5个并发读卡器

    例如,如果有一个事件中心,最多支持32*5个并发读卡器

    如果您有更多的同时用户(>32*5),则需要增加事件中心的数量

    直接从事件中心读取事件时可能会产生问题 在这种情况下,并非所有web应用程序实例都将接收所有事件

    有一些可能的原因:

  • 如果一个或多个读卡器由于设置而断开连接
  • 。然后,从指定分区接收将丢失其他分区的事件数据 我测试了五个同时读卡器从一个分区接收事件的场景。无事件损失


    希望这对你有帮助。如果有任何问题,请随时告诉我。

    @CSharpRocks lol,你刚刚提供了他已经包含的链接。当使用Azure存储(Blob)时有什么问题?@RitaHan MSFT我脑海中唯一的问题是我能实现实时事件传递到Web GUI吗?目前,所有事件都由事件中心处理,只要有新事件,它就会直接传递到GUI,在
    逻辑体系结构中,它存储在Blob中,而不是直接传递到GUI。我需要更新图形用户界面尽快有一个新的事件。感谢解释。我没有指定分区键。因为事件中心被设置为流分析作业的输出。我认为事件是以RR方式分布在分区之间的。对于阅读,我使用的是
    EventProcessorHost
    。此外,一个web应用程序可以有20个并行实例(放大),每个实例都有自己的EventProcessorHost,因此在这种情况下,一些web应用程序实例可能会错过消息?,因为EventProcessorHost将在云存储中全局保留其偏移量。我可以让它与EventProcessorHost一起工作吗?