用于远程监控的Azure解决方案

时间:2016-11-30 08:11:02

标签: architecture azure-web-sites iot azure-eventhub azure-iot-hub

我已经为一些基于IoT和Industry 4.0概念的演示目的构建了一个测试应用程序。以下是重点。

  1. 我在Windows IoT上构建了一个后台应用程序(在Raspberry上 Pi 3)收集传感器数据并推送到MS Azure云。那里 可能是许多同步的物联网设备。
  2. 在Azure端,IoT Hub接收设备到云消息。
  3. 然后将数据传递给流分析作业,该作业将数据传递到事件中心。
  4. 事件中心在我的配置中有2个使用者组,这两个用户组都由Azure Web应用程序使用。
  5. 默认使用者组由WebJob用于存储历史数据,而在图像中名为Consumer Group 1的自定义使用者组由MVC 5应用程序使用。
  6. MVC 5应用使用SignalR将数据传递给已连接的用户以更新信息中心。
  7. 出于演示目的,这种情况似乎工作正常,我们有5或10个同时连接到云webapp。
  8. 以下是设置的架构图

    IoT solution Architecture diagram

    问题

    现在,对于真实场景,可能会有许多用户同时使用云应用程序,并且云计算正在发挥作用,它可以将Web应用程序水平扩展到许多实例,直接从事件中读取事件时可能会产生问题在这种情况下,Hub并非所有的网络应用实例都会收到所有哪个错误的事件,我认为这就是MS Azure remote monitoring Architecture diagram中的原因,即webapp没有直接从Event Hub读取消息

    问题

    对于解决问题并仍然向客户显示实时事件,上述架构可能有什么最佳/最佳变化?

1 个答案:

答案 0 :(得分:1)

直接从事件中心读取事件数据受这些quotas and limits的限制。

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

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

因此,例如,如果您有一个事件中心,则最多支持32 * 5个并发读取器。

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

  

直接从Event Hub读取事件时可能会产生问题   在这种情况下,并非所有的web-app实例都会收到所有活动......

有一些可能的原因:

  1. 如果一个或多个读者因Epoch设置而断开连接。
  2. If you don't specify a partition key when publishing an event, a round robin assignment is used。然后从指定分区接收将丢失其他分区'事件数据。
  3. 我测试了五个同时读者从一个分区接收事件的场景。没有事件丢失。

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