3.2. Knative Eventing 架构

OpenShift Container Platform 上的 Knative Eventing 可让开发人员使用 事件驱动的架构 和无服务器应用程序。事件驱动的构架所基于的概念是,创建事件、事件 sink 的人员和使用它们的用户之间是分离的。

Knative Eventing 使用标准 HTTP POST 请求来发送和接收事件创建者和用户之间的事件。这些事件符合 CloudEvents 规范,它允许在任何编程语言中创建、解析、发送和接收事件。

您可以使用以下方法,将 事件从事件源 传播到多个事件 sink:

Channel 和 Broker 实现通过使用 Subscriptions 和 Trigger 管理事件到事件 sink。如果目标 sink 不可用,则会缓冲事件。Knative Eventing 支持以下场景:

在不创建消费者的情况下发布事件
您可以将事件作为 HTTP POST 发送到代理,并使用 SinkBinding 分离生成事件的应用程序的目标配置。
在不创建发布程序的情况下消耗事件
您可以使用 Trigger 来根据事件属性消耗来自代理的事件。您的应用程序将以 HTTP POST 的形式接收事件。

3.2.1. 事件 sink

要启用多种 sink 类型的交付,Knative Eventing 会定义以下通用接口,这些接口可由多个 Kubernetes 资源实现:

可寻址的对象
能够接收和确认通过 HTTP 发送的事件到 Event 的 status.address.url 字段中定义的地址。Kubernetes Service 对象也满足可寻址的接口。
可调用的对象
能够通过 HTTP 接收事件并转换它,并在 HTTP 响应有效负载中返回 0 或 1 新事件。这些返回的事件可能会象处理外部事件源中的 Events 一样进一步处理。