Kubernetes 上的事件网格 - 概念

本文介绍使用 Azure Arc 的 Kubernetes 上的事件网格(预览版)中的主要概念。

重要

Azure Arc 上的 Kubernetes 事件网格目前正处于公共预览阶段。 此预览版在提供时没有附带服务级别协议,不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

事件

事件是记录了关于软件系统运行事实的数据。 通常,由于系统引发的信号或系统观察到的信号,事件会报出状态更改。 事件包含两种类型的信息:

  • 表示发生状态更改的事件数据

  • 提供有关事件发生的上下文信息的上下文属性

    事件数据和上下文属性都可用于筛选事件。

Kubernetes 上的事件网格支持 CloudEvents 架构规范。 下面是使用 CloudEvents 架构的事件的示例。 事件网格支持最大大小为 1 MB 的事件。

[{
       "specVersion": "1.0",
       "type" : "orderCreated",
       "source": "myCompanyName/us/webCommerceChannel/myOnlineCommerceSiteBrandName",
       "id" : "eventId-n",
       "time" : "2020-12-25T20:54:07+00:00",
       "subject" : "account/acct-123224/order/o-123456",
       "dataSchema" : "1.0",
       "data" : {
          "orderId" : "123",
          "orderType" : "PO",
          "reference" : "https://www.myCompanyName.com/orders/123"
      }
}]

来源

源属性描述发生事件的上下文。 源可能是事件的发起方。 但是,在某些情况下,有生产者创建并发布事件。 而且,这些生成者与来源不同。 为简单起见,本文假定源是事件的生成者。

每个事件源生成一个或多个事件类型的事件。 作为事件源,应用程序定义一组相关事件来宣布其状态更改。 每个事件都有常见信息,例如事件源、事件发生时间以及唯一标识符。 每个事件还具有仅与特定类型的事件相关的特定信息。 目前预览版支持最大大小为 1 MB 的事件。

有关事件中包含的属性,请参阅 CloudEvents 架构

Publishers

事件发布者是将事件发送到事件网格并由事件订阅者接收的应用程序或系统。

主题

主题是一种输入通道的形式,该形式用于公开一个终结点,发布者可以将事件发送到事件网格。

主题可用于相关事件的集合。 可以为每个类别的相关事件创建一个主题。 在某些情况下,源可用于将事件组织成类别,因为源通常与一组密切相关的事件类型(“MyApp.OrderCreated”、“MyApp.OderDeleted”、“MyApp.OrderRejected”等)相关联。

设想一个应用程序,发送与管理用户账户和处理订单相关的事件。 事件订阅者不太可能同时对这两类事件感兴趣。 创建两个自定义主题,让事件处理程序订阅感兴趣的主题。 对于小型解决方案,建议将所有事件发送到单个主题。

事件订阅者

事件订阅者是软件系统,例如微服务,它们通过公开端点,以便 Event Grid 向其传递事件。

事件订阅

事件订阅会告知 Event Grid 您对某个主题中的哪些事件感兴趣(用于事件筛选),以及将它们发送到哪里(事件路由)。 创建事件订阅时,可以提供用于处理事件的终结点。 可以通过在事件订阅上配置筛选器子句来选择要传递到终结点的事件。

事件处理程序

事件处理程序是一个软件系统,用于公开向其发送事件的终结点。 处理程序接收事件并采取措施来处理事件。 事件网格支持多种处理程序类型。 作为处理程序,可以使用 Kubernetes 或 Azure 上托管的受支持 Azure 服务,也可以使用自己的解决方案来公开托管的 Web 挂钩(终结点)。 根据处理程序的类型,事件网格遵循不同的机制来保证事件的传递。 如果目标事件处理程序是 HTTP Web 挂钩,则会重试该事件,直到处理程序返回状态代码 200 - 正常。 有关详细信息,请参阅 事件处理程序

SAS 身份验证

Kubernetes 上的事件网格提供基于 SAS 密钥的身份验证,用于将事件发布到主题。

事件传送

Kubernetes 上的事件网格提供可靠的传递和重试机制。 如果事件网格无法确认事件处理程序终结点已收到事件,则会重新传送事件。 有关详细信息,请参阅事件网格消息传递和重试

批量事件发布

使用主题时,事件必须始终在数组中发布。 对于低吞吐量方案,该数组将只有一个事件。 对于大量用例,我们建议每次发布一起对多个事件进行批处理,以实现更高的效率。 最多允许的批处理大小为 1 MB。 每个事件仍不应大于 1 MB。 有关更多信息,请参阅 批量事件传递

Kubernetes 组件上的事件网格

  • 事件网格运算符实现运算符模式。 它监测由于向 Kubernetes 的 API 服务器发出的控制平面请求而导致的事件网格资源状态变化。 当有影响任何事件网格资源状态的请求时,事件网格运算符会将该状态与事件网格代理同步。

  • 事件网格代理既充当控制平面操作,也进行数据平面操作。

    作为控制平面服务,它负责将事件网格的状态转换为事件网格操作员指定的所需状态。 例如,当发出创建新主题的请求时,它将满足该请求并更新服务元数据。

    作为数据面服务,它为所有事件发布请求提供服务,并将事件传送到在事件订阅上配置的目的地。

后续步骤

若要开始,请参阅 “创建主题和订阅”。