你当前正在访问 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 事件网格的两个主要功能:

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

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

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

事件网格的推送传递机制可将数据发送到目标,其中包括你自己的应用程序 Webhook 和 Azure 服务。 我们来详细了解一下这两个功能:

MQTT 消息传递

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

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

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

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

下面是 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 终结点,从而增强安全性并简化客户端配置。
  • 客户端生命周期事件 - 允许应用响应客户端连接状态或客户端资源操作的相关事件。

有关 MQTT 代理的详细信息,请参阅以下文章:

事件消息传递 (HTTP)

事件网格使用 HTTP 来支持推送和拉取事件传递。 使用推送传递时,需要在事件订阅中定义一个目标,以便事件网格将事件发送到该目标。 使用拉取传递时,订阅服务器应用程序将连接到事件网格以使用事件。 事件网格命名空间中的主题支持拉取传递。

显示推送传递和拉取传递以及涉及的资源类型的概要示意图。

事件处理程序

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

推送传递与拉取传递

以下一般指导原则可帮助你确定何时使用拉取传递或推送传递。

拉取传递

  • 完全由你控制何时接收事件。 例如,应用程序可能不会一直运行、不够稳定,或者你要在特定的时间处理数据。
  • 完全由你控制事件的使用。 例如,使用者应用程序中的下游服务或层出现问题,导致无法处理事件。 在这种情况下,拉取传递 API 允许使用者应用将已读取的事件释放回代理,以便可以稍后传递。
  • 你希望在接收事件时使用专用链接,这只能通过拉取传递实现,推送传递则不支持。
  • 你无法公开终结点和使用推送传递,但可以连接到事件网格以使用事件。

推送传递

  • 你希望避免通过不断的轮询来确定是否发生了系统状态更改。 你希望在发生状态更改时使用事件网格向你发送事件。
  • 你的某个应用程序无法发出出站调用。 例如,你的组织可能担心数据外泄。 但是,应用程序可以通过公共终结点接收事件。

下面是 HTTP 模型的一些亮点:

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

有关详细信息,请参阅以下文章:

用例

有关可以使用 Azure 事件网格的用例列表,请参阅用例

支持的区域

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

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