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

Azure 事件网格的 MQTT 代理功能概述

Azure 事件网格使消息队列遥测传输(MQTT)客户端能够相互通信,并与 Azure 服务通信,以支持物联网(IoT)解决方案。 可以使用事件网格 MQTT 中转站功能来完成以下方案。 有关演示这些方案的代码示例,请参阅 此存储库

  • 使用多对一消息传送模式引入遥测数据。 此模式使应用程序能够将大量设备连接的管理工作负担分散到事件网格。
  • 使用请求-响应(一对一)消息传送模式控制 MQTT 客户端。 无论客户端的角色如何,此模式都可让任何客户端不受限制地与任何其他客户端通信。
  • 使用一对多消息传送模式将警报广播到客户端群。 此模式使应用程序能够仅发布一条消息,服务将为每个相关客户端复制该消息。
  • 通过 HTTP 推送传递功能将 MQTT 消息路由到 Azure 服务和 Webhook 来集成来自 MQTT 客户端的数据。 可以将此集成与 Azure 服务配合使用,以从 IoT 设备引入数据开始构建数据管道。

MQTT 代理非常适合用于实现汽车、移动性和制造方案等。 若要了解如何使用 Azure 消息传送和数据分析服务构建安全且可缩放的解决方案,以便将数百万 MQTT 客户端连接到云,请参阅 汽车制造 参考体系结构。

事件网格的概要示意图,其中显示了与发布服务器和订阅服务器客户端的双向 MQTT 通信。

关键概念

事件网格 MQTT 中转站功能涉及以下关键概念。

MQTT

MQTT 是一种发布-订阅消息传输协议,专为受限环境而设计。 它是 IoT 方案的热门通信标准,因为效率、可伸缩性和可靠性。 MQTT 代理允许客户端通过 MQTT v3.1.1、MQTT v3.1.1、基于 WebSocket、MQTT v5 和 MQTT v5 通过 WebSocket 发布和订阅消息。 以下列表显示了 MQTT 代理的一些功能亮点:

  • MQTT v5 功能:

    • 最后的遗嘱和证明:通知 MQTT 客户端其他 MQTT 客户端突然断开连接。 可以使用此功能来确保在意外断开连接期间 MQTT 客户端之间可预测且可靠的通信流。
    • 用户属性:允许在消息标头中添加自定义键/值对,以提供有关消息的更多上下文。 例如,包括消息的用途或来源,以便接收方能够有效地处理消息。
    • 请求-响应模式:使客户端能够利用标准请求-响应异步模式,在请求中指定响应主题和关联 ID,使客户端无需事先配置即可做出响应。
    • 消息过期间隔:允许在忽略不再相关或有效的消息时向 MQTT 中转站声明。 示例包括忽略过时的命令或警报。
    • 主题别名:帮助客户端减小主题字段的大小,从而使数据传输成本更低。
    • 最大消息大小:允许客户端控制他们可以从服务器处理的最大消息大小。
    • 接收最大值:允许客户端根据消息速率控制消息速率,例如处理速度或存储功能。
    • 清理开始和会话过期:使客户端能够通过保留客户端的订阅信息和消息来优化会话的可靠性和安全性,以达到可配置的时间间隔。
    • 负面确认:允许客户端有效地响应不同的错误代码。
    • 服务器发送的断开连接数据包:允许客户端有效地处理断开连接。
    • MQTT 保留:确保中转站将上次发布的消息存储在主题上,并自动将其传递到任何新订阅者。 此功能允许设备立即接收最新的已知状态,而无需等待下一次更新。 此功能可实现跨 IoT 系统的更快、更可靠的状态同步。
  • MQTT v3.1.1 功能:

    • 最后的遗嘱和证明:通知 MQTT 客户端其他 MQTT 客户端突然断开连接。 可以使用此功能来确保在意外断开连接期间 MQTT 客户端之间可预测且可靠的通信流。
    • 持久会话:通过在客户端断开连接时保留客户端的订阅信息和消息来确保可靠性。
    • 服务质量(QoS)0 和 1:为客户端提供对通信效率和可靠性的控制。
    • MQTT 保留:确保中转站将上次发布的消息存储在主题上,并自动将其传递到任何新订阅者。 此功能允许设备立即接收最新的已知状态,而无需等待下一次更新。 此功能可实现跨 IoT 系统的更快、更可靠的状态同步。

以下部分介绍 MQTT 中转站和 MQTT v5 规范支持的功能之间的当前差异。 不支持 QoS 2。

详细了解 MQTT 中转站和当前限制

发布-订阅消息传送模型

发布-订阅消息传递模型为客户端提供可缩放的异步通信。 它使客户端能够将大量连接和消息的处理工作负担分散到服务。 通过发布-订阅消息传送模型,客户端可以使用一对多、多对一和一对一的消息传送模式高效通信:

  • 一对多:使客户端只能发布服务为每个感兴趣的客户端复制的一条消息。
  • 多对一:使客户端能够减轻管理与 MQTT 代理的大量连接的负担。
  • 一对一:允许任何客户端与任何其他客户端通信,而不考虑客户端的角色。

命名空间

事件网格命名空间是支持 MQTT 中转站功能的资源的管理容器,以及支持 拉取传递功能的资源。 MQTT 客户端可以连接到 MQTT 代理并发布-订阅消息。 MQTT 代理对客户端进行身份验证、授权发布-订阅请求,并将消息转发给感兴趣的客户端。 详细了解 命名空间概念

客户端

客户端是指发布和订阅 MQTT 消息的 IoT 设备或应用程序。

IoT 设备是连接到 Internet 以传输遥测数据和接收命令的物理对象。 这些设备是配备嵌入式传感器和软件的传感器、设备、计算机或其他对象。 传感器和软件使它们能够彼此或者与周围环境通信和交互。 IoT 设备的价值在于提供实时数据和见解的能力,使企业和个人能够做出明智的决策,提高效率和工作效率。

IoT 应用程序是设计用于与 IoT 设备交互及处理其中的数据的软件。 它们通常包含数据收集、处理、存储、可视化和分析等组件。 这些应用程序使用户能够监视和控制连接的设备、自动执行任务并从 IoT 设备生成的数据中获得见解。

客户端身份验证

事件网格有一个客户端注册表,用于存储有关有权连接到事件网格的客户端的信息。 在某个客户端可以连接到事件网格之前,客户端注册表中必须有该客户端的条目。 当客户端连接到 MQTT 代理时,它需要基于标识注册表中存储的凭据向 MQTT 代理进行身份验证。 MQTT 代理支持以下客户端身份验证机制:

访问控制

考虑到 IoT 环境的巨大规模和受限设备的独特安全挑战,访问控制对于 IoT 方案至关重要。 事件网格通过灵活的访问控制模型提供基于角色的访问控制,该模型可用于管理客户端发布或订阅主题的授权。

随着 IoT 环境的巨大规模,为每个客户端分配每个主题的权限非常繁琐。 事件网格的灵活访问控制通过将客户端和主题分组到客户端组和主题空间来解决这种规模挑战。 创建客户端组和主题空间后,可以配置权限绑定,以授予对客户端组的访问权限,以发布或订阅主题空间。

显示事件网格 MQTT 中转站的访问控制模型的关系图。

主题空间还允许控制客户端组中每个客户端发布或订阅其自己的主题的授权,从而提供精细访问控制。 这种精细访问控制是通过在主题模板中使用变量来实现的。 详细了解 访问控制

路由

使用事件网格,可以将 MQTT 消息路由到 Azure 服务或 Webhook,以便进一步处理。 相应地,你可以通过将 IoT 数据用于数据分析、存储和可视化及其他用例来生成端到端解决方案。 通过使用路由配置,可以将所有 MQTT 消息从客户端发送到 事件网格命名空间主题事件网格自定义主题。 消息位于主题中后,可以将事件订阅配置为使用主题中的消息。 例如,借助此功能,可以使用事件网格将遥测数据从 IoT 设备路由到事件中心,然后路由到 Azure 流分析,以便从设备遥测中获取见解。 详细了解 路由

显示事件网格中的 MQTT 消息路由的关系图。

用于Microsoft Fabric 事件流的 MQTT 事件(预览版)

将 MQTT 消息和云事件从事件网格命名空间路由到 Microsoft Fabric 事件流,以便实时分析、存储和可视化 IoT 数据。

显示 MQTT 事件如何路由到 Microsoft Fabric 的关系图。

边缘 MQTT 代理集成

事件网格与 Azure IoT作 集成,通过云中的事件网格 MQTT 中转站功能在边缘桥接其 MQTT 中转站功能。 Azure IoT作为在已启用 Azure Arc 的 Kubernetes 群集上运行的边缘计算提供了新的分布式 MQTT 代理。 它可以使用系统分配的托管标识(这简化了凭据管理)连接到事件网格 MQTT 代理,并使用Microsoft Entra ID 身份验证。 MQTT 中转站为 IoT 设备和应用程序提供高可用性、可伸缩性和安全性。 详细了解如何将 Azure IoT Operations MQTT 中转站连接到事件网格 MQTT 代理

MQTT 客户端生命周期事件

客户端生命周期事件允许应用程序响应有关客户端连接状态或客户端资源作的事件。 可以跟踪客户端的连接状态、响应客户端断开连接的缓解作,并跟踪客户端在自动故障转移期间附加到的命名空间。 详细了解 MQTT 客户端生命周期事件

自定义域名

自定义域名支持允许用户将自己的域名分配给事件网格命名空间的 MQTT 和 HTTP 终结点,从而增强安全性并简化客户端配置。 该功能可帮助企业满足其安全性和合规性要求,并且无需修改已链接到域的客户端。 为多个命名空间分配自定义域名还有助于提高可用性、管理容量和处理跨区域客户端移动。 详细了解 自定义域名

MQTT 保留(预览版)

MQTT 保留的消息用于在中转站上存储主题的最后已知良好值,确保新订阅者立即接收最新消息,而无需等待下一次发布。 此功能在设备状态报告、控制信号或配置数据等方案中特别有用,其中最新消息必须始终可供连接上的客户端使用。 有关详细信息,请参阅 MQTT 在 Azure 事件网格中保留支持

HTTP 发布(预览版)

HTTP 发布使应用程序能够通过简单的 HTTPS POST 请求将 MQTT 消息发布到事件网格 MQTT 代理,而无需维护活动的 MQTT 会话。 它最适合 MQTT 客户端不可行或必要的方案,例如无服务器函数、云服务或后端应用程序。 HTTP 发布允许事件驱动的体系结构可靠地安全地注入 MQTT 消息。 常见用例包括发布来自 Azure Functions、Azure 逻辑应用或 API 集成的设备命令、警报或控制信号。 有关详细信息,请参阅 Azure 事件网格中 MQTT 消息的 HTTP 发布

概念

详细了解事件网格中 MQTT 中转站的概念:

详细了解 MQTT 中转站及其主要概念: