跳至内容

通道类型和默认值

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 通道不得在生产环境中使用。

下一步

我们使用分析和 Cookie 来了解网站流量。有关您使用我们网站的信息将与 Google 共享,用于该目的。了解更多。