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

什么是 Azure 事件网格?

Azure 事件网格是消息分发的高度可缩放且完全托管的发布-订阅服务。 事件网格提供灵活的消息使用模式,并使用消息队列遥测传输(MQTT)和 HTTP 协议。 使用事件网格,可以使用设备数据生成数据管道,集成应用程序,并生成事件驱动的无服务器体系结构。

客户端可以使用事件网格通过 MQTT v3.1.1 与 v5.0 协议发布和订阅消息,以支持物联网 (IoT) 解决方案。 通过 HTTP,可以使用事件网格生成事件驱动解决方案,其中发布者服务将系统状态更改(事件)报给订阅者应用程序。 可以将事件网格配置为将事件发送到订阅服务器(推送传递),或者订阅者可以连接到事件网格来读取事件(拉取传递)。 事件网格支持 CloudEvents 1.0 规范,以跨系统提供互作性。

显示使用 MQTT 和 HTTP 协议的发布者和订阅者的关系图。

核心功能

事件网格有两个主要功能:

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

使用推送和拉取传递模式进行数据分发:在任何数据管道中,HTTP 应用程序都可以使用推送或拉取 API 来使用消息。 数据源可能包括 MQTT 客户端的数据,但它还包括通过 HTTP 发送其事件的以下数据源:

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

事件网格推送传递机制将数据发送到包含你自己的应用程序 Webhook 和 Azure 服务的目标。 下面介绍这两个功能。

MQTT 消息传递

事件网格允许客户端使用发布-订阅消息传送模型在 自定义 MQTT 主题名称 上进行通信。 事件网格支持通过 MQTT v3.1.1、MQTT v3.1.1、基于 WebSocket、MQTT v5 和 MQTT v5 通过 WebSocket 发布和订阅消息的客户端。

事件网格还支持通过 HTTPS 发送 MQTT 消息的设备和服务,这简化了与非 MQTT 客户端的集成。 事件网格允许将 MQTT 消息发送到云以分析、存储和可视化数据,此外还支持其他用例。 此功能目前处于预览状态。

事件网格与 Azure IoT作 集成,以将其 MQTT 中转站功能与云中的事件网格 MQTT 中转站功能桥接在边缘。 Azure IoT MQTT 代理是一个新的分布式 MQTT 代理,用于在已启用 Azure Arc 的 Kubernetes 群集上运行的边缘计算。 它现已作为 Azure IoT作的一部分提供。

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

显示与发布服务器和订阅服务器客户端的双向 MQTT 通信的关系图。

事件网格中 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 令牌(JWT)身份验证,对于 Azure 中未预配的 MQTT 客户端来说,这是轻量且安全的。 使用 自定义 Webhook 身份验证,允许外部 HTTP 终结点(Webhook)动态对 MQTT 连接进行身份验证。 此方法使用 Entra ID JWT 验证来确保安全访问。
  • 传输层安全性 (TLS) 1.2 和 TLS 1.3 支持:使用可靠的加密协议保护客户端通信。
  • 多会话支持:将应用程序连接到多个活动会话,以确保可靠性和可伸缩性。
  • 基于 WebSocket 的 MQTT:为受防火墙限制的环境中的客户端启用连接。
  • 自定义域名:允许用户将自己的域名分配给事件网格命名空间的 MQTT 终结点,从而增强安全性并简化客户端配置。
  • 客户端生命周期事件:允许应用程序响应有关客户端连接状态或客户端资源作的事件。
  • HTTP 发布:使设备和服务能够通过 HTTPS 将 MQTT 消息发送到事件网格,这简化了与非 MQTT 客户端的集成。
  • MQTT 保留:确保主题上的最后一条已知消息自动传送到新订阅服务器,从而启用即时状态同步。

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

事件消息传递 (HTTP)

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

显示推送传递和拉取传递的图示,其中包含涉及的资源类型。

事件处理程序

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

推送传递与拉取传递

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

拉取传递

  • 需要完全控制何时接收事件。 例如,应用程序可能一直未启动或不够稳定。 可能仅在特定时间处理数据。
  • 完全由你控制事件的使用。 例如,使用者应用程序中的下游服务或层可能有一个问题,导致你无法处理事件。 在这种情况下,拉取传递 API 允许使用者应用将已读事件释放回中转站以供以后交付。
  • 当你收到事件时,你想要使用 专用链接 ,这只能与拉取传递一起使用,而不是推送传递。
  • 你无法公开终结点和使用推送传递,但可以连接到事件网格以使用事件。

推送传递

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

HTTP 模型突出显示:

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

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

用例

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

支持的区域

以下区域提供了新的 MQTT 中转站和命名空间主题功能。

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