你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure IoT 中心的体系结构最佳做法

Azure IoT 中心是一种基于云的托管服务,充当中心消息中心,用于 IoT 应用程序与其连接的设备之间的通信。 可以大规模将几乎所有设备及其后端解决方案可靠地连接到 IoT 中心。

本文假设作为架构师,你已查看了可用于创建 IoT 解决方案 技术和服务,并选择 IoT 中心 作为工作负荷的 Azure IoT 平台服务。 本文中的指南提供了映射到 Well-Architected 框架支柱原则的体系结构建议。

重要

如何使用本指南

每个部分都有一个 设计清单,该清单提供关注的体系结构区域以及本地化为技术范围的设计策略。

此外,还包括有助于具体化这些策略的技术功能的建议。 这些建议并不表示可用于 IoT 中心及其依赖项的所有配置的详尽列表。 然而,它们列出了映射到设计视角的关键建议。 使用建议生成概念证明或优化现有环境。

技术范围

这次审查重点关注以下 Azure 资源的相互关联的决策:

  • Azure IoT 中心
  • Azure IoT 中心设备预配服务 (DPS)
  • 适用于 IoT 中心的 Azure 设备更新
  • Azure IoT Edge
  • Azure 数字孪生
  • Azure Sphere
  • Microsoft Defender for IoT

可靠性

可靠性支柱的目的是通过 构建足够的复原能力和从故障中快速恢复来提供持续的功能。

可靠性设计原则 为各个组件、系统流和整个系统提供高级设计策略。

设计清单

根据可靠性设计评审核对清单开始实施您的设计策略。 在记住 IoT 中心的性能的同时,确定其与业务需求的相关性。 扩展策略以根据需要包含更多方法。

  • 设计用于复原的设备。 设计设备以满足端到端解决方案的运行时间和可用性要求。 确保 IoT 设备可以在与云的间歇性连接下高效运行。

  • 针对业务需求进行设计。 考虑引入体系结构修改以满足服务级别协议的成本影响。 例如,若要提高可靠性和高可用性,可以实现跨区域冗余和自动缩放系统。 仔细考虑权衡利弊。

  • 实现安全、简单的更新过程。 为操作员创建管理您的企业物联网解决方案中设备的策略。 IoT作员需要简单可靠的更新工具和做法。

  • 观察应用程序运行状况。 根据可观测性定义服务级别指示器(SLI)和服务级别目标(SLO)。 除了 IoT 中心中包含的进程外,还添加用于审核、监视和警报的进程。

  • 为关键组件实现高可用性和灾难恢复。 规划可复原的硬件和软件组件,以增加冗余,包括跨区域冗余。

  • 规划容量。 对服务配额和节流进行规划,并考虑检测和操作之间的延迟。 在生产规模建立基准,以支持不间断的数据流。

建议

建议 好处
计算所需的 IoT 中心容量,例如每天的消息数和其他限制。 如果工作负荷具有波动的容量要求,请实施自动缩放机制,以便根据需求增加和减少容量。 有关详细信息,请参阅 为解决方案选择合适的 IoT 中心层和大小。 动态缩放有助于优化资源使用情况。 它有助于确保解决方案保持响应且可靠,而无需过度预配资源。
将设备重新连接策略添加到 IoT 中心,以设计可复原的应用程序。 有关详细信息,请参阅管理设备重新连接 IoT 设备通常依赖于间歇性或不稳定的网络连接。 重新连接策略使工作负荷无需用户干预即可恢复,从而提高可用性。
评估 IoT 中心中不同高可用性和灾难恢复选项的权衡。 根据 IoT 解决方案的运行时间目标,确定最适合业务目标的选项。 在 Microsoft发起的故障转移手动故障转移跨区域高可用性之间进行选择。 故障转移策略可帮助工作负荷快速切换到备份实例,从而最大程度地减少对用户和业务作的影响。
使用 DPS 预配设备并将其分配给 IoT 中心。 DPS 是一项帮助程序服务,无需人工干预即可实现零接触实时预配。 DPS 能够以高度安全且可缩放的方式预配数百万台设备。
使用 Device Update for IoT Hub 管理 IoT 设备的无线更新。 确保更新策略包括逐步推出、可复原的 A/B 更新、详细管理和报告工具。 此方法有助于确保 IoT 设备的安全、安全且可靠的更新,从而减少停机时间并提高运营效率。 它有助于维护设备符合性并快速识别和解决更新故障,从而提高系统的整体可靠性。
实施 DevOps 做法来管理 IoT 解决方案,包括持续集成和持续部署(CI/CD)、监视和自动更新。

- 使用 DevOps 生成和发布 IoT Edge 应用程序
- 使用 Azure Monitor 监控 IoT 中心收集的数据并从中获取警报
- 使用 IoT 中心中的自动设备管理来自动管理大规模设备
DevOps 做法增强了 IoT 解决方案的可靠性与效率。 它们支持快速部署、持续监视和自动更新。 这些功能可减少停机时间,提高系统性能,并安全地、一致地部署更新和更改。

安全

安全支柱的目的是为工作负荷提供 保密性、完整性和可用性 保证。

安全设计原则 通过应用 IoT 中心技术设计方法来实现这些目标提供了高级设计策略。

设计清单

根据面向安全性的设计评审清单启动设计策略,并确定漏洞和控制措施来改进安全态势。 扩展策略以根据需要包含更多方法。

  • 使用强标识对设备和用户进行身份验证。 实施增强安全性的做法。 例如,你应该:

    • 为可信身份建立硬件信任根。
    • 注册设备。
    • 颁发可续订凭据。
    • 使用无密码或多重身份验证(MFA)。
  • 自动化并使用最小特权访问控制。 限制受攻击的设备或标识或未经批准的工作负载的影响。

  • 评估设备运行状况。 评估设备运行状况以控制访问或标识用于修正的设备。 检查安全配置、评估漏洞和不安全的密码、监视威胁和异常情况,并构建持续更新的风险配置文件。

  • 实现设备更新。 实现持续更新,使设备保持正常运行。 使用集中式配置和合规性管理解决方案以及可靠的更新机制来确保设备处于最新状态并正常运行。

  • 监视系统安全性和计划事件响应。 主动监视未经授权的或泄露的设备,并响应新兴威胁。

  • 确保高度安全的连接。 确保 IoT 设备和 IoT 云服务之间传输的所有数据都是机密和防篡改的。

建议

建议 好处
为设备应用零信任条件。 连接到 IoT 中心的设备应:
- 包含一个用于强身份验证的硬件安全模块
- 使用可续订凭据
- 强制实施最低特权访问控制。
- 发出适当的运行状况信号,以实现有条件访问。
- 提醒操作员在设备受到威胁时从 IoT Hub 撤销设备

设备应包括:
- 更新代理以获取安全更新。
- 云驱动配置和自动安全响应的设备管理功能。
- 仅启用必要的功能,以最大程度地减少物理攻击占用。
使用标准加密算法进行 - 数据静态保护。
连接到 IoT 中心的设备的零信任条件可增强安全性和可靠性。

硬件安全模块、可续订凭据和最低特权访问控制将未经授权的访问和泄露的设备降到最低。

条件访问和更新代理的健康信号有助于确保设备始终保持安全和合规。 云驱动的设备管理和自动化安全响应以及安全代理加强了安全态势。

小型物理攻击占用空间和静态数据保护可保护敏感信息,并帮助维护系统完整性。
使用 X.509 证书向 IoT 中心对设备进行身份验证。 有关详细信息,请参阅《使用 X.509 证书对标识进行身份验证》 与安全令牌相比,生产环境中的基于 X.509 的身份验证提供了更高的安全性。
IoT 设备的最低层特权访问。 使用 网络分段 对 IoT 设备进行分组。 这种做法可缓解潜在泄露的影响。

例如,可以将 IoT 设备连接到设备的“IoT 网络”,例如打印机、VoIP 手机和智能电视。 将此 IoT 网络与员工访问的其他组织资源分开。

使用网络微分段在逻辑上将专用运营技术环境与公司信息技术网络分开。 若要创建此隔离,请使用包含防火墙的外围网络体系结构。 成熟的组织还可以在 Purdue 模型的多层(通常通过使用下一代防火墙)实施微分段策略。
网络分段将 IoT 设备分组,从而缓解泄露的影响。

网络微分段在网络层隔离能力较弱的设备,可以是在网关后面或者是置于离散的网络分段中。
使用 Microsoft Defender for IoT 作为防御前线来帮助保护 Azure 中的资源。

Defender for IoT 是一个无代理的网络层安全平台,可为 IoT 设备提供持续的资产发现、漏洞管理和威胁检测。
Defender for IoT 提供持续监视和威胁检测,以快速识别未经授权的或泄露的设备。 它增强了 IoT 网络的整体安全性和复原能力。
将 IoT 中心与 Azure Sphere 一起作为监护模块使用,可帮助保护其他设备的安全,包括无法依赖可信连接的现有旧系统。

Azure Sphere 守护模块搭载应用程序,并通过以太网、串行端口或蓝牙低能(BLE)接口与现有设备进行连接和部署。 设备不一定具有直接的 Internet 连接。
Azure Sphere 保护者模块提供了一种在现有设备中实现高度安全的连接的方法,而无需将这些设备公开给 Internet。 此保护包括加密数据传输、高度安全的 OS 和应用程序更新,以及身份验证,以确保仅与受信任的主机通信。
使用 IoT Edge 网关为功能有限的设备实施强标识模式。

IoT Edge 提供到 IoT 中心的边缘运行时连接,并支持证书作为强设备标识。 IoT Edge 支持 PKCS#11 标准,用于设备制造标识和可信平台模块 (TPM) 或硬件安全模块上的其他秘密。
IoT Edge 网关有助于强制实施强标识模式,以便只有经过身份验证和授权的设备才能在网络中通信。 此功能可增强 IoT 生态系统的安全性和完整性。

成本优化

成本优化侧重于 检测支出模式、优先考虑关键领域的投资,以及优化其他 以满足组织预算,同时满足业务需求。

成本优化设计原则 提供了一种高级设计策略,用于实现这些目标,并在与 IoT 中心及其环境相关的技术设计中根据需要进行权衡。

设计清单

根据投资的成本优化设计评审核对清单开始实施您的设计策略。 微调设计,使工作负荷与为工作负荷分配的预算保持一致。 设计应使用正确的 Azure 功能,监视投资,并查找随时间推移进行优化的机会。

  • 制定成本管理规则。 若要了解总拥有成本(TCO),请在计划中考虑功能成本和非功能性成本。

  • 使用行业标准策略和方法。 对于特定于 IoT 的行业(如制造业),请使用 行业标准策略和方法 来构建结构、IoT 系统、智能城市或能源电网。 此方法有助于优化成本。

  • 了解保护 IoT 解决方案的成本。 IoT 涵盖从硬件到云服务的整个过程,因此在每个阶段都会产生与安全相关的费用。 例如,可以产生微处理器单元(MPU)、设备、电信、云技术和运营技术的成本。

  • 费率优化设计。 定义每个 IoT 解决方案整体关注点的实现计划,以优化成本。

  • 随着时间的推移进行监视和优化。 持续监视和优化 IoT 中心成本。 在实施您的解决方案后,持续开展成本优化活动。

  • 估算实际成本。 为开发阶段和运行阶段的 IoT 解决方案选择适当的 IoT 中心层和大小

  • 评估一次性成本与定期成本。 考虑一次性成本与定期成本的成本优势。 例如,黑客技术不断发展,因此可以使用可靠的商业作系统和模块(如 Azure Sphere)。 对于一次性付款,此类服务提供每月的设备安全补丁。

  • 优化资源使用情况。 实现 自动缩放机制,以按需调整 IoT 中心容量。 此方法有助于确保高效的资源使用情况和成本控制。

  • 使用预留容量。 评估消息有效负载 大小和频率,以确保您的 IoT Hub 规模合适,并为扩展做好准备。

  • 实现成本警报和预算。 在Microsoft成本管理中设置成本警报和预算,以有效跟踪和控制支出。 将成本管理 API 用于 IoT 中心DPS

建议

建议 好处
了解 IoT 中心的配额和节流限制,以及解决方案在生产中大规模运行时,它们会如何影响总体拥有成本 (TCO)。

成本模型应考虑到生产规模的设备、基础结构、运营和监视。
每种服务都有自己的配额和节流限制。 了解 IoT 中心中的这些限制以优化成本。
了解设备生态系统和涉及的各种角色,例如硬件制造商、应用开发者和运营商,以进行规划。 设备的范围可以是小型 8 位 MCU 到高级 x86 CPU,例如台式计算机中的 CPU。 有关详细信息,请参阅 IoT 解决方案 中设备配置的最佳做法。

选择的硬件取决于许多变量。 了解 IoT 设备中 关键硬件差异,以降低成本。
了解设备范围以及关键硬件差异,可更有效地分配资源。 这可确保为正确的任务使用正确的设备,从而提高性能和成本效益。
使用 IoT 即插即用 减少硬件开发和载入时间。 采用 数字孪生定义语言(DTDL)行业本体,这是设备用于将其功能播发到支持 IoT 即插即用的应用程序的模型。 解决方案构建者可以使用 IoT 即插即用将 IoT 设备与 IoT 中心集成,而无需手动配置。
使用 Device Update for IoT Hub 提供无线更新并远程管理设备。 远程更新设备的固件或软件的解决方案有助于降低长期手动劳动力成本。
将连接器用于 Azure 服务,例如 Power Apps、Power Automate 和 Azure 逻辑应用。

IoT 中心和 Azure 事件网格提供连接器,以便在逻辑应用和 Power Automate 中实现要求。
连接器可在 IoT 设备与各种 Azure 服务之间实现无缝集成,从而实现自动化工作流和增强的数据处理功能。
使用 设备模拟器 并设置负载测试环境,以生产规模测试解决方案并了解解决方案成本。

模拟代码示例(如 Azure IoT 设备遥测模拟器 帮助你使用各种参数大规模测试和估算成本。
设备模拟器有助于大规模节省模型、测试和模拟方案结果的成本。
若要降低传输大小和成本,请:
- 为 IoT 设备选择正确的协议
- 压缩边缘的遥测数据。
- 设备上的批量消息
- 选择在设备唤醒时保持连接或重新连接。
- 使用 设备孪生功能 在成本关键时异步交换状态信息。

对于电池供电的 IoT 设备,可以选择在设备唤醒时保持连接保持活动状态或重新连接。 使用保持活动消息或心跳消息检查设备状态,但要考虑额外的网络传输成本。

重新连接需要使用约 6 KB 的数据来建立 TLS 连接、验证设备和检索设备孪生体。 但是,如果设备每天仅唤醒一次或两次,它将节省电池容量。
方案的最佳协议使设备能够降低传输层中的传输大小和成本。
了解如何对 IoT 数据使用热、暖和冷路径分析,并应用 lambda 体系结构。 使用 IoT 中心内的内置 消息路由 功能。 IoT 解决方案可以存储大量数据。 存储成本占整体解决方案成本的很大一部分。 根据业务方案选择适当的处理和存储计划。

卓越运营

卓越运营主要侧重于开发实践、可观测性和发布管理等过程。

卓越运营设计原则 提供了一个高级设计策略,用于实现工作负载的运营要求的目标。

设计清单

根据卓越运营设计评审清单来开始实施设计策略,以定义与 IoT 中心相关的可观测性、测试和部署。

  • 拥抱持续运作和扩展。 确保 IoT 解决方案可以:

    • 成功管理自动化设备预配。
    • 与其他后端系统集成。
    • 支持不同的角色,例如解决方案开发人员、解决方案管理员和作员。
    • 根据需求变化(如新部署的 IoT 设备或更高的引入吞吐量)进行调整和有效缩放。
  • 优化生成和发布过程。 成功的企业 IoT 解决方案需要策略来建立和更新设备或设备配置群。 设备的配置包括设备属性、连接设置、关系和固件。 IoT作员需要简单可靠的工具来更新设备或设备群在设备生存期内的任何时间点的配置。

  • 了解运营状况。 使用 IoT 解决方案日志记录、监视和警报系统来确定解决方案是否按预期运行,并帮助解决解决方案整个生命周期的问题。

  • 使用自动化和 DevOps。 IoT 设备本质上是具有专用硬件和软件的小型计算机。 IoT 设备通常在硬件中受到约束。 例如,它们可能具有有限的内存或计算容量。 自动化和 DevOps 有助于确保将 OS 和软件正确上传到 IoT 设备和网关,从而最大限度地减少运营停机时间。 使用自动化和 DevOps 监视和管理 IoT 设备的生命周期。

建议

建议 好处
使用 IoT 中心自动设备管理IoT Edge 自动部署 实现对现有或新设备和 IoT Edge 设备配置的持续更新,例如属性、应用程序特定的设置或关系。

若要根据一次性或定期计划更新现有设备或 IoT Edge 设备配置,请使用 IoT 中心计划作业

若要通过无线更新现有设备或 IoT Edge 设备固件、应用程序或包更新,请使用适用于 IoT 中心 设备更新。

为 IoT 设备提供手动更新方法。 由于根证书更改或连接问题,可能需要通过物理连接到本地计算机或使用本地连接协议(如 BLE)手动更新设备。
IoT 中心自动设备管理和 IoT Edge 自动部署提供了一种高效、安全且可靠的方法来自动执行机队或特定设备组的配置部署。 为了确保设备具有指定的配置,服务会根据标记持续监视新的和现有的目标设备及其配置。

IoT 中心计划作业提供了在计划时间更新机队或特定设备组配置的最佳方法。

IoT 中心的设备更新可有效更新机群或特定设备组。
配置 IoT 云解决方案的引入和其他后端层,以高效处理预期和意外的容量需求。 如果解决方案链接到连接的产品,请确保它可以处理 IoT 中心和关联的后端层内预期负载的波动。 市场营销计划(如销售或促销)和季节性事件(如假日)可能会带来负载高峰。 为了确保解决方案可以缩放以处理峰值,请测试预期和意外事件的负载变化。
使用 IoT 中心 REST API 中公开的 REST API 生成集中式管理 UI,以帮助运营团队管理设备群。 集中式设备管理解决方案简化了 IoT 设备的管理、监视和作,这有助于确保在整个 IoT 解决方案中高效生命周期管理和一致的配置。 集成 UI 还有助于运营团队有效地管理设备群,从而降低作复杂性并提高系统的整体可靠性。
使用集中式标识提供者(如 Microsoft Entra ID)创建 托管标识。 仅允许这些角色中的相应用户执行管理或操作活动,例如创建和配置新设备、将命令发送到实地设备中的硬件、部署更新和修改用户权限。 与传统安全令牌相比,Microsoft用于身份验证的 Entra ID 提供了改进的安全性和易用性。 可以在 Microsoft Entra ID 中使用 Azure 基于角色的访问控制(RBAC)来控制对 IoT 中心的访问。
在基于 IoT 中心的解决方案中,可以使用 Microsoft Entra ID 对 IoT 中心服务 API 的请求进行身份验证,例如创建设备标识或调用直接方法。 可以为解决方案作员和管理员开发自定义管理 UI。 此 UI 根据 Microsoft Entra ID 对用户进行身份验证,并代表其向 IoT 解决方案后端发送 API 请求。 自定义管理 UI 通过合并 RBAC 和其他安全措施来提高安全性。 他们还通过提供简化复杂任务的直观界面来增强用户体验。
使用 IoT 中心日志记录、监视和警报系统来确定解决方案是否按预期运行,并帮助排查和缓解问题。 有关 IoT 中心创建的指标和日志的详细信息,请参阅 IoT 中心监视数据参考 监视和日志记录有助于确定设备或系统是否遇到错误,是否配置正确,是否生成准确数据,并且是否满足定义的 SLO。
使用 CI/CD DevOps 原则和流程来提高工作效率并创建无缝的快速开发周期。 在 Azure Pipelines 中,使用内置的 IoT Edge 任务来为您的 IoT Edge 应用程序实施 DevOps。 有关详细信息,请参阅 CI/CD 到 IoT Edge 设备 IoT 中心和 IoT Edge 中的 DevOps 工具和流程有助于自动执行边缘软件生命周期。
定义重新预配和取消预配 IoT 设备的过程。 了解详细信息。 请参阅 IoT 中心设备重新预配概念。 IoT 设备生命周期包括定义将现有设备重新预配到其他位置或目的的过程,并在必要时安全地取消预配它们。 IoT 设备的重新预配和取消预配过程可帮助你管理其生命周期。 在 IoT 中心之间迁移设备状态信息和配置时,这些过程有助于保持作的连续性。 这种做法有助于确保设备在移动后继续正常运行。
测试 IoT 中心的故障转移和故障恢复,以帮助确保高可用性。 记录 Microsoft启动的故障转移手动故障转移的恢复步骤。

将故障期间将应用程序恢复或故障转移到次要 Azure 区域所需的步骤标准化并自动化。 这种做法有助于确保能够有效地响应中断并最大程度地减少影响。 同样,编写代码并自动化执行将应用程序在问题解决后切换回主要区域的步骤。
故障转移和故障回复过程测试有助于确保 IoT 解决方案能够处理故障并维护高可用性,从而最大程度地减少故障的影响。

Microsoft启动和手动故障转移的记录恢复步骤提供了一种清晰且结构化的方法来处理故障转移方案,这可确保团队成员了解过程并有效地实现这些方案。
使用基础结构即代码(IaC)语言(如 Bicep 或 Azure 资源管理器模板(ARM 模板)定义和存储所有 IoT 中心、DPS 和后端基础结构配置。 将整个基础结构定义为 IaC,以便可以跨环境自动部署资源。

使用标识和访问管理(IAM)或治理工具(例如 Azure RBAC 或 Azure Policy)来控制对基础结构的写入访问权限。

将配置设置或基础结构更新限制在自动化管道内。 使用此方法可以查看环境中和何时发生的更改。
预配和配置 IoT 解决方案资源(例如 IoT 中心或 DPS)的可重复且可预测的过程有助于减少错误和停机时间。

DevOps 工具(如 Azure DevOps 或 GitHub)可帮助跟踪配置、IaC 和固件版本。 版本跟踪有助于识别每个环境中固件、配置和 IaC 的版本。
创建使用与生产环境相同的固件、配置设置和 IaC 的测试环境。 若要轻松创建这些环境,请使用 IaC 并尽可能自动执行流程。 使测试环境与生产环境相匹配有助于简化新功能和热修复的开发与测试。

性能效率

性能效率就是通过管理容量来保持用户体验,即使负载增加也不例外。 该策略包括缩放资源、识别和优化潜在瓶颈,以及优化峰值性能。

性能效率设计原则 提供了一个高级设计策略,用于根据预期使用量实现这些容量目标。

设计清单

根据性能效率设计评审清单开始设计策略,根据 IoT 中心的关键性能指标定义基线。

  • 设计水平缩放。 IoT 解决方案可以从几百台设备或消息开始,每分钟增长数百万个设备和消息。 IoT 中心和相关的云服务可以轻松处理增加的负载,但 IoT 设备和网关会增加复杂性。 在完成解决方案之前,可以设计和部署 IoT 设备。 工业物联网等行业的设备可以使用多年,通常可达几十年。 更换设备以更新容量可能会产生重大成本,因此必须提前规划。

  • 提前测试性能。 提前测试并经常进行测试,以便快速识别问题。 了解可以引入复杂性的变量,例如不同地理位置的传感器、设备和网关,其特征、速度和通信可靠性不同。 在测试计划中考虑到这种复杂性。 测试网络断开连接等故障方案。 对 IoT 中心和相关云服务中的所有设备、边缘和云组件执行压力和负载测试。

  • 持续监视生产环境中的性能。 若要监视多个地理区域中不同类型的设备,请使用分布式监视解决方案。 根据监视和发送到云的信息量来平衡内存和性能成本。 针对诊断方案调整传输,并在多个级别和层进行监控。 为工业或网关解决方案提供网关指标。

建议

建议 益处
优化硬件功能。 硬件升级和更换可能会增加成本和时间。 提前调整 IoT 设备所需的容量和功能的大小。

若要优化现有硬件功能,请使用高效语言和框架,如 Embedded CRust Embedded。 在为受约束的设备进行开发时,或者当设备上的大多数安全性和通信堆栈可用时,请使用 Azure IoT Embedded C SDK
在特定硬件上运行的计算和输入输出密集型任务可以显著提高性能。 例如,在本地 GPU 上运行的机器学习算法可以从中央处理器卸载处理,从而创建更快、更高效的计算。

高效的语言和框架可以提高性能并减少资源消耗。

用于 C 的 Azure IoT 设备 SDK 可有效地管理所有必要的组件,以便连接到云网关。 Azure IoT 设备 SDK 处理弹性连接所需的消息转换、错误处理和重试机制,从而优化现有硬件功能的使用。
请考虑在边缘运行某些工作负荷,具体取决于系统约束,例如网络吞吐量或延迟。 边缘工作负荷可降低延迟并提高响应能力,因为它们处理数据更接近生成的位置。 此方法可最大程度地减少对持续云连接的需求,这有利于间歇性或有限的网络访问方案。 它还有助于从云中卸载处理,从而减少带宽使用量和相关成本。
请勿一次性连接所有设备,例如发生区域性停电后。 重试时,使用会引入抖动的截断指数回退。 此方法会随着时间的推移分散重新连接尝试,这有助于防止网络拥塞和服务器过载。 它创建更稳定、更可靠的重新连接过程,可降低其他中断或性能下降的风险。 正确管理的重新连接尝试有助于维护 IoT 中心的整体运行状况和性能。
优化离线场景。 为设备提供足够的信息和上下文,以便在没有云连接的情况下工作,并在本地存储数据,以便它们能够从断开连接和重新启动中恢复。 使用设备孪生体和模块孪生体,在设备和云之间异步同步状态信息,以处理间歇性连接到 IoT 中心的设备。

设置数据的生存时间(TTL),以确保自动删除过期的数据。 这种做法减少了手动干预的需求。

如果边缘设备存储空间达到容量,请使用缓存逐出策略,例如先进先出、后进先出或基于优先级的策略,以帮助高效管理存储。 请考虑使用单独的磁盘或磁盘控制器来存储数据,以便即使设备运行时或应用程序存储不足,设备运行时或应用程序也能继续工作。
在没有连接时,可以本地存储数据的设备,包括日志和根据优先级缓存的遥测数据,有助于在断开连接期间维护功能。 在设备未连接时放弃不太重要的数据,以减少本地存储要求,并在设备重新连接时同步时间。

用于存储数据的单独磁盘或磁盘控制器有助于确保存储限制不会中断关键作。
优化消息传送效率。 IoT 中心根据 4 KB 消息大小计算每日配额消息计数。 发送较小的消息会使某些容量未使用。 若要优化使用情况,目标是消息大小接近 4 KB。 若要减少消息总数,请将较小的设备到云消息分组为更大的消息。 但请注意合并消息时引入的延迟。

若要实现应用程序级批处理,请在下游设备合并多个较小的消息,并将更大的消息发送到边缘网关。

使用直接方法进行请求-答复交互,这些交互可以在用户指定的超时后立即成功或失败。对于作过程因设备是否响应而有所不同的情况,请使用此方法。

使用设备孪生获取设备状态信息,包括元数据和配置。 IoT 中心为连接的每台设备保留一个设备孪生体。
设备到云消息的数量和大小是 IoT 解决方案性能效率的重要参数。 IoT 中心为每个层定义消息限制,这会影响解决方案性能和成本。

批处理有助于限制消息开销,并减少对本地边缘磁盘存储的写入。
了解消息配额和节流。 IoT 中心层为每个云网关单元设置限制。 消息传送配额定义层的持续吞吐量和持续发送速率。 IoT 中心可以处理在短时间内超过这些配额的负载,以弹性处理突发或负载过度。

另一个重要限制是每小时或每日服务负载或节流限制。 限制限制可防止 IoT 中心在较长时间内过度加载。
了解消息传送配额和限制,以帮助确保 IoT 解决方案在定义的限制内运行。 这种做法可防止重载和维护性能。 有效地管理负载,以便可以处理突发和负载过度,而不会影响整个系统稳定性。

此方法有助于维护可靠高效的 IoT 解决方案,并防止因负载过大而造成潜在的服务中断。
优化消息处理。 优化用于将数据发送到云的格式。 权衡优化数据格式和根据带宽成本降低云处理的好处。 请考虑使用 IoT 中心消息扩充 来为设备消息添加上下文。

对摄取的数据进行时间关键性事件处理,而不是存储未处理的数据,并要求复杂查询来获取这些数据。 对于时间关键型事件处理,请考虑延迟数据到达和窗口化的影响。 根据用例评估方法,例如处理关键警报而不是扩充消息。

根据解决方案要求选择基本或标准 IoT 中心层。 了解基本层不支持的功能。

请考虑使用事件网格进行发布-订阅事件路由。 有关详细信息,请参阅 使用事件网格触发操作以响应 IoT 中心事件比较消息路由和适用于 IoT 中心的事件网格
在存储之前,可能需要使用更多信息转换、处理或扩充来自设备或网关的消息。 此步骤可能很耗时,因此应评估性能的影响。

某些建议冲突,例如使用压缩来优化数据传输,而不是避免在解密消息时进行云处理。 根据其他体系结构支柱和解决方案要求平衡和评估这些建议。
使用 IoT Edge 优先级队列 确定发送到 IoT 中心的重要数据的优先级。 没有连接时,IoT Edge 会缓冲消息。 还原连接后,它会先按优先级顺序发送所有缓冲消息,然后发送新消息。

根据用例,使用 IoT 中心消息路由 来分隔不同数据优先级的路由。 IoT 中心消息路由会增加延迟。

以更长的时间间隔保存和发送低优先级数据,或使用批量或文件上传。 上传文件的恶意软件检测会增加延迟。

根据时间限制分隔消息。 例如,当存在时间限制时,直接将消息发送到 IoT 中心,并在没有时间限制的情况下通过 IoT 中心或批量数据传输(如 Azure 数据工厂)使用文件上传。 可以在 IoT Edge 模块 中使用 Azure Blob 存储进行文件上传。
设备发送到云的某些数据可能比其他数据更重要。 根据优先级对数据进行分类和处理,以提高性能效率。 例如,恒温器传感器发送温度、湿度和其他遥测数据,但也会在温度偏离定义的范围时发送警报。 系统将警报消息分类为高优先级,并处理它的方式不同于温度遥测。
使用 DPS 在预配过程、IoT 中心连接不可用时或设备重新启动时,设置与 IoT 中心的连接。

使用 均匀加权分发策略 根据用例调整预配的权重。 此方法优化资源分配。
DPS 有助于确保设备安全高效地预配。 在一段时间内或通过较小批次配置设备有助于平衡 DPS 负载和配额,以确保顺利的载入过程。

根据延迟将设备分配到不同区域中的 IoT 中心可提高性能并减少连接时间。 实现 DPS 连接字符串的缓存策略可减少重新连接作,从而提高系统的整体效率。
优化边缘与云处理。 使用本地计算在设备或边缘上运行实时和近实时任务,或进行具有时间限制的小型、优化、低延迟处理。 对于需要额外外部数据或计算依赖项的较大工作负荷,请使用云资源。

例如,可以在边缘运行机器学习算法来对视频流中的人员进行计数,并将包含计数的事件发送到云。 此方法提供快速的本地处理和高效的基于云的趋势分析。

使用 Azure 流分析 IoT Edge 模块 在边缘运行分析工作负荷,例如异常情况检测。 这种做法有助于在将事件发送到云之前使用检测到的异常来标记事件,从而提高系统的整体效率。

了解涉及许多连接的下游设备的边缘工作负荷的开销。 如果存在间歇性云连接,边缘节点必须转发或处理所有消息并缓存所有数据。

若要评估解决方案的性能影响,请针对每个边缘节点使用预期的最大数量下游设备和消息对解决方案进行测试。 此外,还了解消息转换或扩充在边缘、IoT 中心或云事件处理上可能具有的性能效果。 相应地规划以保持系统效率。
在边缘运行实时和近实时工作负荷可提供低延迟处理和即时响应时间,这对于时间敏感型应用程序至关重要。

使用预期的最大下游设备和消息进行测试可确保边缘节点能够处理负载和维护性能。
若要优化大容量云数据的性能效率,请使用 IoT 中心和数据目标(如 Azure Data Lake Storage 和 Azure 数据资源管理器)之间的内置服务集成。 这些服务针对高性能吞吐量进行优化。

使用事件中心 SDK 开发来 IoT 中心的自定义引入。 SDK 包含可重新平衡设备和主机的事件处理器。 为满足并发数据读取器数量和所需吞吐量,请使用适当数量的 IoT 中心分区和使用者组。

将数据引入和事件处理所需的存储与报告和集成所需的存储区分开。 根据所需的吞吐量、大小、保留期、数据卷、CRUD 要求和区域复制,使用符合需求的数据存储。 存储示例包括 Data Lake Storage、Azure 数据资源管理器、Azure SQL 和 Azure Cosmos DB。 有关详细信息,请参阅 为应用程序选择 Azure 数据存储
针对大容量云数据的优化性能效率可确保 IoT 解决方案能够高效地处理大量数据。 内置服务集成和事件中心 SDK 可帮助简化数据引入和处理。

正确配置 IoT 中心分区和使用者组以及用于不同目的的单独存储有助于改进数据管理。 根据特定需求适当的数据存储有助于维护 IoT 解决方案的性能、可伸缩性和可靠性。
将 IoT 解决方案引入管道与集成处理分开。 确保复杂的查询或加载不会影响 IoT 中心中的数据引入性能。 使用定义完善的版本控制的 API 访问有关设备孪生、模块孪生、作业和消息路由的 IoT 中心信息。 阻止最终用户针对 IoT 中心存储创建用户定义的查询。 请考虑使用单独的数据存储进行集成和报告。 IoT 解决方案引入管道和集成处理的分离可确保从集成层执行复杂的查询或加载不会影响数据引入性能。 此方法维护 IoT 中心的效率和可靠性。
使用 Azure Monitor 收集 IoT 中心指标,并为关键指标发送警报。 根据规模限制设置 Azure Monitor 警报,例如每秒发送的设备到云消息。 将警报设置为限制的百分比(例如 75%),以便提前通知你。 为日志和指标(例如限流错误的数量)设置 Azure Monitor 警报。 设置 Azure 服务运行状况服务警报,以在 IoT 中心状态更改时触发通知。 IoT 中心指标和关键指标警报可确保对 IoT 解决方案进行主动监控和管理。 基于缩放限制和这些限制百分比的警报有助于在达到可伸缩性限制之前通知你,以便你可以及时进行调整。 日志和指标的警报,例如节流错误,有助于及时识别和解决问题。 当 IoT 中心状态发生更改时,会发出警报,从而提高对潜在中断的警觉性,并使您能够采取必要的措施来维护 IoT 解决方案的可靠性和性能。

Azure 策略

Azure 提供了一组与 IoT 中心及其依赖项相关的大量内置策略。 可以通过 Azure Policy 审核上述一些建议。 例如,可以检查以下情况:

  • IoT 中心为服务 API 禁用了本地身份验证方法。
  • IoT 中心设备预配实例禁用了公用网络访问,因此无法通过公共 Internet 进行访问。
  • 只能从专用终结点访问 IoT 中心。
  • IoT 中心中的资源日志已启用。 这些日志会重新创建活动线索,有助于在发生安全事件或网络泄露后进行调查。

有关全面治理,请查看 Azure Policy 内置定义,了解物联网 和其他可能影响 IoT 解决方案安全性的策略。

Azure 顾问建议

Azure 顾问是一名个性化的云顾问,可帮助你遵循最佳做法来优化 Azure 部署。 顾问建议与 Well-Architected 框架支柱保持一致。

有关详细信息,请参阅 Azure 顾问中的建议。

下一步

IoT 中心文档