Knative-eventing资源详解
Knative-eventing资源详解
友情链接:Knative简介
1.Knative-eventing运行流程
2.事件源(Event Source)
当前支持以下几种类型的事件源:
- ApiserverSource:每次创建或更新 Kubernetes 资源时,ApiserverSource 都会触发一个新事件
- GitHubSource:GitHub 操作时,GitHubSource 会触发一个新事件
- GcpPubSubSource: GCP 云平台 Pub/Sub 服务会触发一个新事件
- AwsSqsSource:Aws 云平台 SQS 服务会触发一个新事件
- ContainerSource: ContainerSource 将实例化一个容器,通过该容器产生事件
- CronJobSource: 通过 CronJob 产生事件
- KafkaSource: 接收 Kafka 事件并触发一个新事件
- CamelSource: 接收 Camel 相关组件事件并触发一个新事件
3.事件接收/转发(Flow)
当前 Knative 支持如下事件接收处理:
-
直接事件接收
通过事件源直接转发到单一事件消费者。支持直接调用 Knative Service 或者 Kubernetes Service 进行消费处理。这样的场景下,如果调用的服务不可用,事件源负责重试机制处理。 -
通过事件通道(Channel)以及事件订阅(Subscriptions)转发事件处理
这样的情况下,可以通过 Channel 保证事件不丢失并进行缓冲处理,通过 Subscriptions 订阅事件以满足多个消费端处理。 -
通过 brokers 和 triggers 支持事件消费及过滤机制
Knative Eventing 定义 Broker 和 Trigger 对象,实现了对事件进行过滤(亦如通过 ingress 和 ingress controller 对网络流量的过滤一样)。通过定义 Broker 创建 Channel,通过 Trigger 创建 Channel 的订阅(subscription),并产生事件过滤规则。
4.事件消费者(Event Consumer)
为了满足将事件发送到不同类型的服务进行消费, Knative Eventing 通过多个 k8s 资源定义了两个通用的接口:
- Addressable 接口提供可用于事件接收和发送的 HTTP 请求地址,并通过status.address.hostname字段定义。作为一种特殊情况,Kubernetes Service 对象也可以实现 Addressable 接口
- Callable 接口接收通过 HTTP 传递的事件并转换事件。可以按照处理来自外部事件源事件的相同方式,对这些返回的事件做进一步处理
当前 Knative 支持通过 Knative Service 或者 Kubernetes Service 进行消费事件。
5.事件注册(Event Registry)
Knative Eventing 定义了一个 EventType 对象,使消费者更容易发现他们可以从 Brokers 消费的事件类型。
注册表由一组事件类型组成。存储在注册表中的事件类型包含(所有)消费者创建触发器所需的信息,而无需求助于其他一些带外机制。