Spring Cloud数据流与Apache Beam / GCP数据流说明

时间:2019-11-26 16:29:02

标签: google-cloud-platform data-science spring-cloud apache-beam spring-cloud-dataflow

我很难理解GCP Dataflow / Apache Beam和Spring Cloud Dataflow之间的区别。我正在尝试做的是迁移到一种更加云原生的解决方案来进行流数据处理,因此我们的开发人员可以将更多精力放在开发核心逻辑上,而不是管理基础架构。

我们有一个现有的流解决方案,其中包含我们可以迭代并独立部署的弹簧云数据流“模块”,就像微服务一样,虽然效果很好,但是我们希望迁移到我们的GCP提供的现有平台中需要我们使用GCP数据流的业务。从高层次看,解决方案很简单:

流1:

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

流2:

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

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

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

任何澄清将不胜感激。预先感谢。

2 个答案:

答案 0 :(得分:3)

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

SCDF概述:

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

SCDF(启动应用程序/Über-jar)带有仪表板,Shell / CLI和API,因此开发人员和操作员可以使用它们来设计和部署流或批处理数据管道。

SCDF中的数据管道由Spring Cloud StreamSpring Cloud Task应用程序组成。由于这些应用程序是独立的自治微服务应用程序,因此用户可以隔离地对单个应用程序进行修补或滚动升级,而不会影响数据管道中的上游或下游应用程序-有关体系结构here的更多详细信息。

SCDF与GCDF:

Spring Cloud Stream和Spring Cloud Task与Apache Beam大致相当。这些是SDK /库。

另一方面,

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

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

GKE / GCP上的SCDF:

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

答案 1 :(得分:2)

首先要澄清的是:Spring Cloud Data Flow与GCP数据流完全不同。

Spring Cloud Data Flow与Apache Beam相当。两者都有描述数据转换的框架,例如ETL。

GCP Dataflow是在GCP上托管的可自动缩放和托管的平台。它接受Apache Beam Framework描述的处理流程。 GCP Dataflow负责运行管道,根据管道需求生成VM的数量,将流分派给这些VM,...

Apache Beam是带有许多连接器的开源项目。在GCP上有很多内容(因为它最初是开源的Google产品),还包含其他连接器,例如kafka io connector

Beam还集成了其他运行程序:DirectRunner用于在当前计算机上启动管道,DataflowRunner用于在GCP Dataflow上运行,SparkRunner用于在Hadoop Spark集群上运行,...

这是一个很棒的解决方案,但是与Spring Cloud Data Flow没有任何直接关系,合规性和可移植性。您必须重写代码才能从一个传递到另一个。

希望这有助于您理解