Spring Cloud Dataflow vs Apache Beam/GCP Dataflow 澄清

Crd*_*12h 1 google-cloud-platform spring-cloud data-science spring-cloud-dataflow apache-beam

我很难理解 GCP Dataflow/Apache Beam 和 Spring Cloud Dataflow 之间的差异。我想要做的是转向更原生的流数据处理解决方案,因此我们的开发人员可以更专注于开发核心逻辑而不是管理基础设施。

我们有一个现有的流解决方案,它由 Spring Cloud 数据流“模块”组成,我们可以独立迭代和部署,就像微服务一样,效果很好,但我们希望迁移到我们业务提供的 GCP 中的现有平台,需要我们使用 GCP Dataflow。在高层次上,解决方案很简单:

流 1:

Kafka Source (S0) -> Module A1 (Ingest) -> Module B1 (Map) -> Module C1 (Enrich) -> Module D1 (Split) -> Module E1 (Send output to Sink S1)
Run Code Online (Sandbox Code Playgroud)

流 2:

Kafka Source (S1) -> Module A2 (Ingest) -> Module B2 (Persist to DB) -> Module B3 (Send Notifications through various channels)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,我们想要采用的解决方案应该是相同的,但是模块将成为 GCP Dataflow 模块,源/接收器将成为 GCP Pub/Sub 而不是 kafka。

我遇到的大多数文档都没有将 SCDF 和 Apache Beam(GCP 数据流模块)作为类似的解决方案进行比较,所以我想知道如何/是否可以将我们现有的逻辑移植到这样的架构上。

任何澄清将不胜感激。提前致谢。

小智 7

我想在@guillaume-blaquiere 的回复中添加 +1:“重写代码”。让我也为这个主题添加更多颜色。

SCDF概述:

Spring Cloud Data Flow (SCDF) 的核心是一个 RESTful 服务,甚至是一个轻量级的 Spring Boot 应用程序。就这样。它不需要运行时来运行;Boot App 可以在任何有 Java 的地方运行,包括在您的笔记本电脑或任何容器平台(k8s、cf、nomad 等)、任何云(aws、gcp、azure 等)上。

SCDF (Boot App / Über-jar) 附带仪表板、Shell/CLI 和 API,因此开发人员和运营商可以使用它们来设计和部署流或批处理数据管道。

SCDF 中的数据管道由Spring Cloud StreamSpring Cloud Task应用程序组成。因为这些是独立和自主的微服务应用程序,用户可以单独修补或滚动升级单个应用程序,而不会影响数据管道中的上游或下游应用程序——有关架构的更多详细信息请点击此处

SCDF 与 GCDF:

Spring Cloud Stream 和 Spring Cloud Task 大致可以与 Apache Beam 相媲美。这些是 SDK/库。

另一方面,SCDF 与 Google Cloud Dataflow (GCDF) 中的数据管道有一些相似之处,但 GCDF 中的模块预计将使用 Apache Beam 构建。换句话说,您不能将在 SCDF 中运行的 Spring Boot 流/批处理微服务作为模块运行到 GCDF - 您必须使用 Apache Beam API 重写它们。SCDF 和 GCDF 基金会都直接依赖于上述各自的框架及其功能。

另一个需要强调的重要区别是运行 Apache Beam 模块所需的运行时组件。在 GCDF 中,所有运行时/运行器期望对用户都是隐藏的,因为它由 GCP 管理。而在 SCDF 中,要以高度可扩展的方式运行它,您需要选择您选择的平台。SCDF 作为平台上的本机容器应用程序运行。

GKE/GCP 上的 SCDF:

您可以在 GCP 上配置一个 GKE 集群,并使用 SCDF 的Helm Chart在 Kubernetes 中本地运行 SCDF 和您当前的流/批处理(Spring Boot)应用程序作为 GCP 上的托管服务。