远程监控预配置解决方案体系结构

IoT 套件远程监控预配置解决方案针对远程位置中的多个计算机实现端到端监视解决方案。 该解决方案结合了关键 Azure 服务来提供业务方案的通用实现。 可将其用作自己实现的起点,并可以根据特定的业务要求自定义该解决方案。

本文逐步讲解远程监控解决方案的一些关键要素,以帮助你了解其工作原理。 该知识有助于:

  • 排除解决方案中的问题。
  • 规划如何定制解决方案来满足自身的特定需求。
  • 自行设计使用 Azure 服务的 IoT 解决方案。

逻辑体系结构

下图描绘了叠加在 IoT 体系结构之上的远程监控预配置解决方案的逻辑组件:

逻辑体系结构

为何使用微服务?

自 Microsoft 发布第一款预配置解决方案以来,云体系结构已有所演变。 微服务应运而生,经证实能够在不降低开发速度的情况下实现可伸缩性和灵活性。 有多种 Microsoft 服务在内部使用此体系结构模式,且获得了出色的可靠性和可伸缩性。 更新的预配置解决方案将这些知识付诸实践,使我们也能从中受益。

Tip

若要详细了解微服务体系结构,请参阅 .NET Application Architecture(.NET 应用程序体系结构)和 Microservices: An application revolution powered by the cloud(微服务:由云推动的应用程序革命)。

设备连接

该解决方案在逻辑体系结构的设备连接部分中包含以下组件:

模拟设备

该解决方案包含一个微服务,使用该微服务可以管理用于在解决方案中测试端到端流的模拟设备池。 模拟设备:

  • 生成设备到云的遥测数据。
  • 响应来自 IoT 中心的云到设备方法调用。

该微服务提供一个 RESTful 终结点用于创建、启动和停止模拟。 每个模拟由一组不同类型的的虚拟设备构成,这些设备可发送遥测数据和响应方法调用。

可以通过解决方案门户中的仪表板预配模拟设备。

物理设备

可将物理设备连接到解决方案。 可以使用 Azure IoT 设备 SDK 实现模拟设备的行为。

可以通过解决方案门户中的仪表板预配物理设备。

IoT 中心和 IoT 管理器微服务

IoT 中心引入从设备发送到云中的数据,并将其提供给 telemetry-agent 微服务使用。

此外,解决方案中的 IoT 中心还可以:

  • 维护一个标识注册表,用于存储允许连接到门户的所有设备的 ID 和身份验证密钥。 可以通过标识注册表启用和禁用设备。
  • 代表解决方案门户在设备上调用方法。
  • 维护所有已注册设备的设备孪生。 设备孪生存储设备报告的属性值。 设备孪生还存储解决方案门户中设置的所需属性,供设备在后续连接时检索。
  • 计划作业,为多个设备设置属性或者在多个设备上调用方法。

该解决方案包含用于处理与 IoT 中心之间的交互的 iot-manager 微服务,这些交互包括:

  • 创建和管理 IoT 设备。
  • 管理设备孪生。
  • 在设备上调用方法。
  • 管理 IoT 凭据。

此服务还运行 IoT 中心查询,以检索属于用户定义组的设备。

该微服务提供一个 RESTful 终结点用于管理设备和设备孪生、调用方法和运行 IoT 中心查询。

数据处理和分析

该解决方案在逻辑体系结构的数据处理和分析部分中包含以下组件:

设备遥测

该解决方案包含两个微服务用于处理设备遥测。

telemetry-agent 微服务:

  • 在 Cosmos DB 中存储遥测数据。
  • 分析来自设备的遥测数据流。
  • 根据定义的规则生成警报。

警报存储在 Cosmos DB 中。

telemetry-agent 微服务使解决方案门户能够读取设备发送的遥测数据。 解决方案门户还使用此服务:

  • 定义监视规则,例如触发警报的阈值
  • 检索以往警报的列表。

使用此微服务提供的 RESTful 终结点来管理遥测、规则和警报。

存储

storage-adapter 微服务是预配置解决方案使用的主存储服务前面的适配器。 它提供简单的集合和键值存储。

预配置解决方案的标准部署将 Cosmos DB 用作主存储服务。

Cosmos DB 数据库在预配置解决方案中存储数据。 storage-adapter 微服务充当解决方案中其他微服务的适配器,用于访问存储服务。

呈现

该解决方案在逻辑体系结构的呈现部分中包含以下组件:

Web 用户界面是一个 React Javascript 应用程序。 该应用程序:

  • 仅使用 Javascript React,完全在浏览器中运行。
  • 采用 CSS 样式。
  • 通过 AJAX 调用与面向公众的微服务交互。

用户界面呈现预配置解决方案的所有功能,并与如下所述的其他服务交互:

使用户界面能够存储和检索配置设置的 ui-config 微服务。

后续步骤

如果想要浏览源代码和开发人员文档,请从以下两个主要 GitHub 存储库中的一个入手:

有关远程监控预配置解决方案的其他概念性信息,请参阅自定义预配置解决方案