你当前正在访问 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 规范,可提供跨系统的互操作性。
核心功能
下面是 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 的消息传送和数据分析服务将数百万辆汽车连接到云。
下面是 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 | 美国中西部 |