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

什么是 Azure 事件网格?

Azure 事件网格是一个高度可缩放、完全托管的发布-订阅消息分发服务,它使用 MQTT 和 HTTP 协议提供灵活的消息使用模式。 借助 Azure 事件网格,可以使用设备数据生成数据管道,集成应用程序,以及生成事件驱动的无服务器体系结构。 客户端可以使用事件网格通过 MQTT v3.1.1 与 v5.0 协议发布和订阅消息,以支持物联网 (IoT) 解决方案。 你可以使用事件网格通过 HTTP 生成事件驱动的解决方案,在其中,发布服务器服务向订阅服务器应用程序通告其系统状态更改(事件)。 可将事件网格配置为向订阅服务器发送事件(推送传递),或者订阅服务器可以连接到事件网格以读取事件(拉取传递)。 事件网格支持 CloudEvents 1.0 规范,可提供跨系统的互操作性。

事件网格的概要示意图,其中显示了使用 MQTT 和 HTTP 协议的发布服务器和订阅服务器。

Azure 事件网格是一个正式版服务,已部署在支持可用性区域的所有 Azure 区域中的可用性区域。 有关事件网格支持的区域列表,请参阅可用产品(按区域)

概述

Azure 事件网格用于数据管道的不同阶段,以实现一组不同的集成目标。

MQTT 消息传递。 IoT 设备和应用程序可以通过 MQTT 相互通信。 事件网格还可用于将 MQTT 消息路由到 Azure 服务或自定义终结点,以进一步分析、可视化或存储数据。 通过与 Azure 服务的这种集成,可以生成首先从 IoT 设备引入数据的数据管道。

使用推送和拉取传递模式分发数据。 在数据管道中的任何位置,HTTP 应用程序都可以通过推送或拉取 API 使用消息。 数据源不仅可以包含 MQTT 客户端的数据,而且还包含以下通过 HTTP 发送事件的数据源:

  • Azure 服务
  • 你的自定义应用程序
  • 外部合作伙伴 (SaaS) 系统

事件网格的推送传递机制可将数据发送到目标,其中包括你自己的应用程序 Webhook 和 Azure 服务。

功能

事件网格提供丰富的功能组合。 这些功能包括:

MQTT 消息传递

  • MQTT v3.1.1 和 MQTT v5.0 支持 – 使用任何开源 MQTT 客户端库来与服务通信
  • 支持包含通配符的自定义主题 - 利用你自己的主题结构
  • 发布-订阅消息传递模型 - 使用一对多、多对一和一对一消息传递模式有效地进行通信
  • 内置云集成 - 将 MQTT 消息路由到 Azure 服务或自定义 Webhook 以进一步处理
  • 灵活精细的访问控制模型 - 将客户端和主题分组以简化访问控制管理,并使用主题模板中的变量支持来实现精细访问控制
  • MQTT 代理身份验证方法 - X.509 证书身份验证是 IoT 设备中的行业身份验证标准,Microsoft Entra ID 身份验证是 Azure 的应用程序身份验证标准,OAuth 2.0(JSON Web 令牌)身份验证为未在 Azure 中预配的 MQTT 客户端提供安全灵活的轻量级验证方法。
  • TLS 1.2 和 TLS 1.3 支持 - 使用可靠的加密协议来保护客户端通信
  • 多会话支持 - 将应用程序连接到多个活动会话,以确保可靠性和可伸缩性
  • 基于 WebSocket 的 MQTT - 为受防火墙限制的环境中的客户端启用连接
  • 自定义域名 - 允许用户将自己的域名分配给事件网格命名空间的 MQTT 终结点,从而增强安全性并简化客户端配置
  • 客户端生命周期事件 - 允许应用响应客户端连接状态或客户端资源操作的相关事件

事件消息传递 (HTTP)

  • 灵活的事件使用模型 – 使用 HTTP 时,通过拉取或推送传递模式使用事件。
  • 系统事件 – 使用内置的 Azure 服务事件快速启动和运行。
  • 你自己的应用程序事件 - 使用事件网格从应用路由、筛选和可靠传递自定义事件。
  • 合作伙伴事件 – 订阅合作伙伴 SaaS 提供商事件并在 Azure 上处理事件。
  • 高级筛选 – 根据事件类型或其他事件属性进行筛选,确保事件处理程序或使用者应用仅接收相关事件。
  • 可靠性 – 推送传递采用 24 小时重试机制和指数退避来确保传递事件。 如果使用拉取传递,则应用程序可以完全控制事件的使用。
  • 高吞吐量 - 使用事件网格生成大容量集成解决方案。
  • 自定义域名 - 允许用户将自己的域名分配给事件网格命名空间的 HTTP 终结点,从而增强安全性并简化客户端配置

备注

关于 TLS 1.0 / 1.1 弃用:对于系统主题,只需对发送到 Webhook 目标的事件传送采取操作。 如果目标支持 TLS 1.2,则事件传送使用 1.2 进行。 如果目标不支持 TLS 1.2,事件传送会自动回退到 1.0 和 1.1。 2025 年 3 月 1 日以后,将不支持使用 1.0 和 1.1 版本进行事件传送。 确保 Webhook 目标支持 TLS 1.2。 检查 TLS 1.2 支持的一种简单方法是使用 Qualys SSL 实验室。 如果报告显示支持 TLS 1.2,则无需执行任何操作。 有关详细信息,请参阅以下博客文章:停用:Azure 事件网格即将进行的 TLS 更改

用例

事件网格支持以下用例:

MQTT 消息传递

事件网格使客户端能够使用发布-订阅消息传递模型根据自定义 MQTT 主题名称进行通信。 事件网格支持通过 MQTT v3.1.1、基于 WebSocket 的 MQTT v3.1.1、MQTT v5 和基于 WebSocket 的 MQTT v5 发布和订阅消息的客户端。 事件网格允许将 MQTT 消息发送到云以分析、存储和可视化数据,此外还支持其他用例。

事件网格与 Azure IoT MQ 集成,以将边缘的 MQTT 代理功能与云中事件网格的 MQTT 代理功能连接起来。 Azure IoT MQ 是用于边缘计算的新型分布式 MQTT 代理,可在已启用 Arc 的 Kubernetes 群集上运行。 它现在已作为 Azure IoT 操作的一部分以公共预览版提供。

Azure 事件网格中的 MQTT 代理功能非常适合实现汽车和运输等方案。 请参阅参考体系结构,了解如何构建安全且可缩放的解决方案,以便使用 Azure 的消息传送和数据分析服务将数百万辆汽车连接到云。

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

借助 Azure 事件网格的 MQTT 代理功能,可以实现以下方案。

引入 IoT 遥测数据

事件网格的概要示意图,其中显示了 IoT 客户端使用 MQTT 协议向云应用发送消息。

使用多对一消息传递模式引入遥测数据。 例如,使用事件网格将来自多个 IoT 设备的遥测数据发送到云应用程序。 此模式使应用程序能够将大量设备连接的管理工作负担分散到事件网格。

命令和控制

事件网格的概要示意图,其中显示了云应用程序使用请求和响应主题通过 MQTT 向设备发送命令消息。

使用请求-响应(一对一)消息模式控制 MQTT 客户端。 例如,使用事件网格将来自云应用程序的命令发送到 IoT 设备。

广播警报

事件网格的概要示意图,其中显示了云应用程序通过 MQTT 向多个设备发送警报消息。

使用一对多消息传递模式向客户端群广播警报。 例如,使用事件网格将来自云应用程序的警报发送到多个 IoT 设备。 此模式使应用程序能够仅发布一条消息,服务将为每个相关客户端复制该消息。

集成 MQTT 数据

显示多个 IoT 设备通过 MQTT 将运行状况数据发送到事件网格,再发送到事件中心,然后从该服务发送到 Azure 流分析的示意图。

通过推送传递拉取传递将 MQTT 消息路由到 Azure 服务和自定义终结点,从而集成来自 MQTT 客户端的数据。 例如,使用事件网格将来自 IoT 设备的遥测数据路由到事件中心,然后路由到 Azure 流分析,以从设备遥测数据中获取见解。

事件的推送传递

可以将事件网格配置为使用推送事件传递将事件发送到一组不同的 Azure 服务或 Webhook。 事件源包括自定义应用程序、Azure 服务与合作伙伴 (SaaS) 服务,这些应用程序和服务通过发布事件来通告系统状态更改(也称为“离散”事件)。 事件网格进而将这些事件传递给配置的订阅服务器目标。

使用事件网格的推送传递可以实现以下用例。

备注

推送传递在事件网格基本层和事件网格标准层中可用,若要详细了解差异,请参阅为你的解决方案选择正确的事件网格层

生成事件驱动的无服务器解决方案

显示 Azure Functions 使用 HTTP 将事件发布到事件网格,然后事件网格将这些事件发送到 Azure 逻辑应用的示意图。

使用事件网格通过 Azure Functions 应用、逻辑应用和 API 管理生成无服务器解决方案。 与使用经典计算模型(为此必须采购基础结构并管理、保护和维护已部署的整个基础结构)相比,将无服务器服务与事件网格配合使用可以获得更高的工作效率、投入收益比和集成度。

从 Azure 服务接收事件

显示 Blob 存储通过 HTTP 将事件发布到事件网格的示意图。事件网格将这些事件发送到事件处理程序(可以是 Webhook 或 Azure 服务)。

事件网格可以接收来自 20 多个 Azure 服务的事件,以便可以自动执行操作。 例如,可以将事件网格配置为在 Azure 存储帐户中创建新的 Blob 时接收事件,以便下游应用程序可以读取和处理其内容。 有关所有支持的 Azure 服务和事件的列表,请参阅系统主题

从应用程序接收事件

显示客户应用程序使用 HTTP 将事件发布到事件网格的示意图。事件网格将这些事件发送到 Webhook 或 Azure 服务。

你自己的服务或应用程序将事件发布到订阅服务器应用程序处理的事件网格。 事件网格采用命名空间主题来解决使用简单资源模型时的大规模集成和路由需求。 也可以使用自定义主题来满足基本集成需求,并使用来提供简单的管理和路由模型,使你可以将事件分发到数百甚至数千个不同的组。

从合作伙伴(SaaS 提供商)接收事件

显示外部合作伙伴应用程序使用 HTTP 将事件发布到事件网格的示意图。事件网格将这些事件发送到 Webhook 或 Azure 服务。

多租户 SaaS 提供商或平台可以通过称为合作伙伴事件的功能将其事件发布到事件网格。 例如,可以订阅这些事件并自动执行任务。 目前,可以接受以下合作伙伴的事件:

事件处理程序

事件订阅是一种通用配置资源,允许定义要使用推送传递将事件发送到的事件处理程序或目标。 例如,可以将数据发送到 Webhook、Azure 函数或事件中心。 有关支持的事件处理程序的完整列表,请参阅:

拉取传递离散事件

Azure 事件网格采用拉取 CloudEvents 传递。 使用此传递模式,客户端可以连接到事件网格以读取事件。 使用拉取传递可以实现以下用例。

按照你自己的频率接收事件

发布服务器和使用者应用程序的概要示意图。发布服务器以高于订阅服务器事件使用速率的频率向事件网格发送事件。

一个或多个客户端可以连接到 Azure 事件网格以按照自己的频率读取消息。 事件网格允许客户端完全控制事件的使用。 例如,应用程序可以在特定的时间接收事件。 解决方案还可以通过添加更多从事件网格读取事件的客户端来提高使用速率。

VNET 中的使用者应用通过 VNET 中的专用终结点从事件网格读取事件的概要示意图。

可以配置专用链接来连接到 Azure 事件网格,以通过虚拟网络中的专用终结点发布和读取 CloudEvents。 虚拟网络与事件网格之间的流量将遍历 Microsoft 主干网络。

重要

专用链接可用于拉取传递,而不可用于推送传递。 当应用程序连接到事件网格以发布事件或接收事件时,可以使用专用链接,而当事件网格连接到 Webhook 或 Azure 服务以传递事件时,不可以使用专用链接。

事件网格命名空间可用的区域

下面是新的 MQTT 代理和命名空间主题功能的可用区域列表:

区域 区域 区域 区域
澳大利亚东部 澳大利亚南部 澳大利亚中部 澳大利亚中部 2
Brazil South 巴西东南部 加拿大中部 加拿大东部
印度中部 美国中部 东亚 美国东部
美国东部 2 美国西部 法国中部 法国南部
德国北部 德国中西部 以色列中部 意大利北部
日本东部 日本西部 韩国中部 韩国南部
墨西哥中部 美国中北部 北欧 挪威东部
波兰中部 南非西部 南非北部 美国中南部
印度南部 东南亚 西班牙中部 瑞典中部
瑞典南部 瑞士北部 瑞士西部 阿拉伯联合酋长国北部
阿联酋中部 英国南部 英国西部 西欧
美国西部 2 美国西部 3 美国中西部

后续步骤

MQTT 消息传递

使用拉取或推送传递分发数据

另请参阅