通道类型和默认值¶
Knative 使用两种类型的通道
- 一个通用的 Channel 对象。
- 每个都有自己的自定义资源定义 (CRD) 的通道实现,例如 InMemoryChannel 和 KafkaChannel。KafkaChannel 支持有序消费者交付保证,这是一种按分区阻塞的消费者,它会等待来自 CloudEvent 订阅者的成功响应,然后才会交付该分区的下一条消息。
自定义通道实现每个都有自己的事件交付机制,例如内存中或基于代理的。代理的例子包括 KafkaBroker 和 GCP Pub/Sub 代理。
Knative 默认提供 InMemoryChannel 通道实现。这种默认实现对不想配置特定实现类型的开发人员很有用,例如 Apache Kafka 或 NATSS 通道。
如果你想在没有指定使用哪个通道实现 CRD 的情况下创建通道,可以使用通用 Channel 对象。如果你不关心特定通道实现提供的属性,例如排序和持久性,并且想要使用群集管理员选择的实现,这将非常有用。
群集管理员可以通过编辑 knative-eventing
命名空间中的 default-ch-webhook
ConfigMap 来修改默认通道实现设置。
有关修改 ConfigMap 的更多信息,请参见 配置事件操作员自定义资源。
默认通道可以为群集、群集上的命名空间或两者都配置。
注意
如果为命名空间配置了默认通道实现,则将覆盖群集的配置。
在以下示例中,群集默认通道实现是 InMemoryChannel,而 example-namespace
的命名空间默认通道实现是 KafkaChannel。
apiVersion: v1
kind: ConfigMap
metadata:
name: default-ch-webhook
namespace: knative-eventing
data:
default-ch-config: |
clusterDefault:
apiVersion: messaging.knative.dev/v1
kind: InMemoryChannel
namespaceDefaults:
example-namespace:
apiVersion: messaging.knative.dev/v1beta1
kind: KafkaChannel
spec:
numPartitions: 2
replicationFactor: 1
注意
InMemoryChannel 通道不得在生产环境中使用。