2.4. 代理(Broker)
代理可与触发器结合使用,用于将事件源发送到事件 sink。事件从事件源发送到代理,作为 HTTP POST
请求。事件进入代理后,可使用触发器根据 CloudEvent 属性 进行过滤,并作为 HTTP POST
请求发送到事件 sink。
2.4.1. 代理类型
集群管理员可为集群设置 default 代理实施。创建代理时,会使用 default 代理实现,除非在 Broker
对象中提供配置。
Kafka 代理只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的详情,请参考 https://access.redhat.com/support/offerings/techpreview/。
2.4.1.1. 用于开发的默认代理实现
Knative 提供基于频道的默认代理实现。这个基于频道的代理可用于开发和测试目的,但不为生产环境提供适当的事件交付保证。默认代理由 InMemoryChannel
频道实现支持。
如果要使用 Kafka 降低网络跃点,请使用 Kafka 代理实现。不要将基于频道的代理配置为由 KafkaChannel
频道实现支持。
2.4.1.2. production-ready Kafka 代理实现
对于生产环境就绪的 Knative Eventing 部署,红帽建议您使用 Knative Kafka 代理实现。Kafka 代理是 Knative 代理的 Apache Kafka 原生实现,它将 CloudEvents 直接发送到 Kafka 实例。
Kafka 代理禁用联邦信息处理标准(FIPS)模式。
Kafka 代理具有与 Kafka 的原生集成,用于存储和路由事件。这可让您更好地与 Kafka 集成,以便在其他代理类型上更好地与 Kafka 集成,并减少网络跃点。Kafka 代理实现的其他优点包括:
- at-least-once delivery assurance
- 根据 CloudEvents 分区扩展排序事件交付
- control plane 高可用性
- 水平扩展数据平面
Knative Kafka 代理使用二进制内容模式将传入的 CloudEvents 存储为 Kafka 记录。这意味着,所有 CloudEvent 属性和扩展都会在 Kafka 记录上映射,而 CloudEvent 的数据
规格与 Kafka 记录的值对应。