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 毫秒。 每个可用性区域由一个或多个数据中心组成,这些数据中心配置了独立电源、散热设备和网络基础结构。 如果一个区域受到影响,其余两个区域支持区域服务、容量和高可用性。 有关可用性区域的详细信息,请参阅区域和可用性区域。
后续步骤
- 有关事件网格的介绍,请参阅关于事件网格。
- 若要开始使用自定义主题,请参阅使用 Azure 事件网格创建和路由自定义事件。