Spring Cloud Data Flow是一个基于微服务的工具包,用于在 Cloud Foundry 和 Kubernetes 中构建流和批处理数据处理管道。
数据处理管道由使用Spring Cloud Stream 或Spring Cloud Task微服务框架构建的 Spring Boot 应用程序组成。
这使得 Spring Cloud Data Flow 成为一系列数据处理用例的理想选择,从导入/导出到事件流和预测分析。
数据流有两个主要组成部分:
访问数据流的主要入口点是通过数据流服务器的 RESTful API。Web 仪表板由数据流服务器提供。Data Flow Server 和 Data Flow Shell 应用程序都通过 Web API 进行通信。
这些服务器可以在多个平台上运行:Cloud Foundry、Kubernetes 或您的本地机器。每个服务器将其状态存储在关系数据库中。
下图显示了架构和通信路径的高级视图:
数据流服务器负责
船长服务器负责:
Data Flow Server 和 Skipper Server 需要安装 RDBMS。默认情况下,服务器使用嵌入式 H2 数据库。您可以将服务器配置为使用外部数据库。支持的数据库有 H2、HSQLDB、MySQL、Oracle、Postgresql、DB2 和 SqlServer。每个服务器启动时都会自动创建模式。
应用程序有两种风格:
长期应用。有两种类型的长期应用程序:
消息驱动的应用程序,其中通过单个输入或输出(或两者)消耗或产生无限量的数据。
第二个是消息驱动的应用程序,可以有多个输入和输出。它也可能是一个根本不使用消息中间件的应用程序。
处理有限数据集然后终止的短期应用程序。短期应用程序有两种变体。
第一个是运行您的代码并在数据流数据库中记录执行状态的任务。它可以(可选)使用 Spring Cloud Task 框架,而不必是 Java 应用程序。但是,应用程序确实需要在 Data Flow 的数据库中记录其运行状态。
第二个是第一个的扩展,包括 Spring Batch 框架作为执行批处理的基础。
带有源、处理器和接收器的流
Spring Cloud Stream 定义了绑定接口的概念,该接口将消息交换模式封装在代码中,即应用程序的输入和输出是什么。Spring Cloud Stream 提供了几个绑定接口,对应以下常见的消息交换合约:
Source:将消息发送到目的地的消息生产者。
Sink:从目的地读取消息的消息消费者。
Processor:源和汇的组合。处理器使用来自目的地的消息并生成要发送到另一个目的地的消息。
这三种类型的应用程序通过使用source、processor和sink来描述type正在注册的应用程序的来向数据流注册
Spring Cloud Data Flow 的架构风格不同于其他流和批处理平台。例如,在 Apache Spark、Apache Flink 和 Google Cloud Dataflow 中,应用程序在专用计算引擎集群上运行。与 Spring Cloud Data Flow 相比,计算引擎的性质为这些平台提供了更丰富的数据执行复杂计算的环境,但它引入了另一种执行环境的复杂性,在创建以数据为中心的应用程序时通常不需要这种环境。这并不意味着您在使用 Spring Cloud Data Flow 时不能进行实时数据计算。例如,您可以开发使用 Kafka Streams API 时间滑动窗口和移动平均功能以及将传入消息与参考数据集连接起来的应用程序。
这种方法的一个好处是我们可以在运行时委托给流行的平台。Data Flow 可以从它们的功能集(弹性和可扩展性)以及您可能已经拥有的关于这些平台的知识中受益,因为您可能将它们用于其他目的。这减少了创建和管理以数据为中心的应用程序的认知距离,因为用于部署其他最终用户/Web 应用程序的许多相同技能都适用。
您可以在 Cloud Foundry、Kubernetes 和您的本地机器上部署 Spring Cloud Data Flow Server 和 Skipper Server。
您还可以将这些服务器部署的应用程序部署到多个平台:
本地:可以部署到本地机器、Cloud Foundry 或 Kubernetes。
Cloud Foundry:可以部署到 Cloud Foundry 或 Kubernetes。
Kubernetes:可以部署到 Kubernetes 或 Cloud Foundry。
最常见的架构是在部署应用程序的同一平台上安装 Data Flow 和 Skipper 服务器。您还可以部署到多个 Cloud Foundry 组织、空间和基金会以及多个 Kubernetes 集群。
更详细的文档可以查阅官方文档:
https://dataflow.spring.io/
查看更多原文,技术咨询与支持,可以扫描微信公众号进行回复咨询