集群管理员可以为集群设置默认的代理实现。创建代理时,除非在Broker
对象中提供设置配置,否则将使用默认的代理实现。
Knative 提供了一个默认的基于通道的代理实现。此基于通道的代理可用于开发和测试目的,但不提供生产环境中足够的事件传递保证。默认代理默认由InMemoryChannel
通道实现支持。
如果要使用 Apache Kafka 来减少网络跳数,请使用 Apache Kafka 的 Knative 代理实现。不要将基于通道的代理配置为由KafkaChannel
通道实现支持。
对于生产就绪型 Knative Eventing 部署,Red Hat 建议使用 Apache Kafka 的 Knative 代理实现。该代理是 Knative 代理的 Apache Kafka 原生实现,它直接将 CloudEvents 发送到 Kafka 实例。
Knative 代理与 Kafka 具有原生集成,用于存储和路由事件。这使得代理和触发器模型与 Kafka 的集成比其他代理类型更好,并减少了网络跳数。Knative 代理实现的其他好处包括:
至少一次传递保证
基于 CloudEvents 分区扩展的事件有序传递
控制平面高可用性
水平可扩展的数据平面
Apache Kafka 的 Knative 代理实现使用二进制内容模式将传入的 CloudEvents 存储为 Kafka 记录。这意味着所有 CloudEvent 属性和扩展都作为 Kafka 记录的 header 进行映射,而 CloudEvent 的data
规范对应于 Kafka 记录的值。