Spring Cloud Data Flow (SCDF) + Apache Kafka - 在哪里部署 Kafka 代理?

Posted

技术标签:

【中文标题】Spring Cloud Data Flow (SCDF) + Apache Kafka - 在哪里部署 Kafka 代理?【英文标题】:Spring Cloud Data Flow (SCDF) + Apache Kafka - Where to Deploy the Kafka Brokers? 【发布时间】:2018-04-06 13:02:40 【问题描述】:

我不确定我是否了解 Spring Cloud Data Flow (SCDF) 和 Apache Kafka Brokers(及其相关的 Zookeeper)之间的关系。

我阅读了几个文档并观看了有关 Spring Cloud Data Flow (SCDF) 的网络研讨会。我了解此框架中不同微服务之间通信的不同绑定选项(RabbitMQ,Kafka,...)。

我找到了很多关于如何使用 Kafka 的信息,但没有找到在哪里运行/操作它。我的假设是否正确,您必须独立于 SCDF 安装/管理/操作 Kafka 代理(+ Zookeeper)? SCDF“只是”使用 Kafka 代理进行内部通信,并且 - 可选地 - 用于微服务内的业务逻辑(例如,通过使用 Kafka 生产者或消费者 API,对吗?

即使我为 SCDF 使用 Mesos 或 Kubernetes 之类的框架,Kafka 代理 (+ ZK) 仍然可以自行运行,也可以在 Mesos 或 Kubernetes 或其他地方运行。

SCDF 可用于部署与 Kafka 代理通信的 Kafka 应用程序 - 这可以是 Kafka 消费者/生产者、Kafka Streams 应用程序,甚至是 Kafka 生态系统的其他部分,如 Kafka Connect 或 KSQL。所有这些都可以在 SCDF 中的 Spring Boot 应用程序/微服务中运行。

这些陈述是否正确,还是我遗漏了什么?

【问题讨论】:

【参考方案1】:

SCDF“只是”使用 Kafka 代理进行内部通信,并且 - 可选地 - 用于微服务内的业务逻辑(例如,通过使用 Kafka 生产者或消费者 API,对吗?

需要明确的是,SCDF 在内部使用 Kafka 或任何其他代理。在运行时依赖它的是应用程序本身。这些应用程序专门基于 Spring Cloud Stream 编程模型。 SCDF 只是将此类应用程序编排成一个完全一致的数据管道。您可以分别从here 和here 阅读有关编程模型以及它们如何与绑定器实现(代理)交互的更多详细信息。

即使我为 SCDF 使用 Mesos 或 Kubernetes 之类的框架,Kafka 代理 (+ ZK) 仍然可以自行运行,也可以在 Mesos 或 Kubernetes 或其他地方运行。

是的 - 这些单独的系统都没有托管。预计它们将单独运行和操作。

【讨论】:

【参考方案2】:

是的,您需要管理代理,数据流不会管理或部署您的中间件基础架构,例如消息代理或数据库

【讨论】:

以上是关于Spring Cloud Data Flow (SCDF) + Apache Kafka - 在哪里部署 Kafka 代理?的主要内容,如果未能解决你的问题,请参考以下文章

Swarm 的 Spring Cloud Data Flow 支持

Spring Cloud Data Flow 的自定义任务中缺少参数

Spring Cloud Data Flow 安全配置和与 RedHat SSO 的集成

Spring Cloud Data Flow 编辑现有流

Spring Cloud Data Flow Grafana Prometheus 不显示流数据

如何在 Spring Cloud Data Flow 中为 Spring Batch 作业设置调度程序?