Azure 事件网格的推送传递 - 概念

本文介绍与推送传递相关的主要事件网格概念。

事件

事件是完全描述系统中所发生情况的最少量信息。 每个事件具有通用信息,例如事件的 source、事件发生的 time 和唯一标识符。 此外,每个事件还具有仅与特定事件类型相关的特定信息。 例如,与在 Azure 存储中创建的有关新文件的事件将包含有关该文件的详细信息,如 lastTimeModified 值。 事件中心事件具有 Capture 文件的 URL。 订单微服务中有关新订单的事件可能具有一个 orderId 属性,以及一个表示订单状态的 URL 属性。

CloudEvents

事件网格使用 CNCF 的开放标准 CloudEvents 1.0 规范,该规范使用 HTTP 协议绑定JSON 格式。 CloudEvents 是一种可扩展事件规范,它为特定的要求提供了记录的扩展。 使用事件网格时,CloudEvents 是首选事件格式,因为它具有详细记录的用例(传输事件的模式事件格式等)、扩展性和改进的互操作性。 CloudEvents 通过提供用于发布和使用事件的通用事件格式来提高互操作性。 它允许使用统一的工具和标准方式来路由和处理事件。

下表显示了当前对 CloudEvents 规范的支持:

CloudEvents 内容模式 是否支持?
结构化 JSON
二进制

一个事件允许的最大大小为 1 MB。 超过 64 KB 的事件以 64 KB 为增量计费。 有关在事件中发送的属性,请参阅 CloudEvents 架构

发布服务器

发布服务器是将事件发送到事件网格的应用程序。 它可以是事件的来源应用程序,即事件源。 Azure 服务将事件发布到事件网格,以在其服务中通告发生了这些事件。 可以从自己的应用程序发布事件。 在 Azure 外部托管服务的组织也可以通过事件网格发布事件。

事件源

事件源即事件发生的位置。 每个事件源都与一个或多个事件类型相关。 例如,Azure 存储是 blob 创建事件的事件源。 IoT 中心是设备创建的事件的事件源。 你的应用程序是你定义的自定义事件的事件源。 事件源负责将事件发送到事件网格。

主题

主题包含已发布到事件网格的事件。 通常会将主题资源用于相关事件的集合。 为了响应某些类型的事件,订阅服务器(Azure 服务或其他应用程序)会确定要订阅哪些主题。 有多种类型的主题:自定义主题、系统主题与合作伙伴主题。

自定义主题

自定义主题也是与应用程序配合使用的主题。 它们是第一种旨在为自定义应用程序构建事件驱动的集成的主题。 作为一种独立的资源,它们会公开自身的终结点作为事件发布目标。

自定义主题支持推送传递。 还可以参阅文章自定义主题

系统主题

系统主题是 Azure 服务(如 Azure 存储、Azure 事件中心和 Azure 服务总线)提供的内置主题。 可以在 Azure 订阅中创建系统主题并订阅这些主题。 有关详细信息,请参阅系统主题概述

事件订阅

订阅告诉事件网格你有兴趣接收主题上的哪些事件。 创建订阅时,需要提供用于处理事件的终结点。 终结点可以是 Webhook 或 Azure 服务资源。 可以筛选发送到终结点的事件。 例如,可按事件类型或事件主题进行筛选。 有关详细信息,请参阅事件订阅CloudEvents 架构。 自定义主题、系统主题和合作伙伴主题以及域的事件订阅具有相同的资源属性。

有关为自定义主题、系统主题和合作伙伴主题以及域创建订阅的示例,请参阅:

若要了解如何获取当前事件网格订阅,请参阅查询事件网格订阅

事件订阅过期

可以针对与自定义主题、系统主题、合作伙伴主题和域主题以及域订阅关联的事件订阅设置过期时间。 事件订阅在该日期后自动过期。 为仅在有限时间内需要的事件订阅设置一个过期日期,你不需要担心清理这些订阅。 例如,创建事件订阅来测试某个方案时,你可能想要设置过期日期。

有关设置过期日期的示例,请参阅使用高级筛选器进行订阅

事件处理程序

从事件网格的角度看,事件处理程序是发送事件的位置。 处理程序将执行一些进一步的操作来处理事件。 使用推送传递时,事件网格支持多种处理程序类型。 可以使用受支持的 Azure 服务或你自己的 Webhook 作为处理程序。 根据处理程序的类型,事件网格遵循不同机制,以保证事件的传递。 对于 HTTP webhook 事件处理程序,在处理程序返回状态代码 200 - OK 之前,将重试事件。 对于 Azure 存储队列,将重试事件,直到队列服务成功处理推送到队列的消息。

若要了解如何将事件传送到任何受支持的事件网格处理程序,请参阅 Azure 事件网格中的事件处理程序

安全性

事件网格为订阅主题以及向主题发布事件提供安全性。 订阅时,必须对事件网格主题拥有足够的权限。 如果使用推送传递,则事件处理程序是一个 Azure 服务,托管标识用于对事件网格进行身份验证,该托管标识应具有适当的 RBAC 角色。 例如,如果将事件发送到事件中心,则事件订阅中使用的托管标识应是事件中心数据发送者角色的成员。 发布时,必须具有该主题的 SAS 令牌或密钥身份验证。 有关详细信息,请参阅事件网格安全性和身份验证

事件传送

使用推送传递时,如果事件网格无法确认订阅服务器的终结点已接收到事件,它将重新传递该事件。 有关详细信息,请参阅事件网格消息传递和重试

批处理

使用自定义主题时,必须始终在数组中发布事件。 对于低吞吐量方案,这可能是一批事件。

可用性区域

Azure 可用性区域是每个 Azure 区域中具有本地容错性的物理上独立的位置。 采用高性能网络进行连接,往返延迟小于 2 毫秒。 每个可用性区域由一个或多个数据中心组成,这些数据中心配置了独立电源、散热设备和网络基础结构。 如果一个区域受到影响,其余两个区域支持区域服务、容量和高可用性。 有关可用性区域的详细信息,请参阅区域和可用性区域

后续步骤