- Spring Cloud Data Flow是用于构建数据集成和实时数据处理管道的工具包
- Data flow 是一个用于开发和执行大数据处理,其模式包括ETL(Extract-Transform-Load),批量运算和持续运算的统一编程模型和托管服务
- 对于在现代运行环境中可组合的微服务程序来说,spring cloud data flow是一个原生云可编配的服务
- 使用spring cloud data flow,开发者可以为像数据抽取,实时分析,和数据导入/导出这种常见用例创建和编配数据通道 (data pipelines)。
- Spring cloud data flow 是基于原生云对 spring XD的重新设计,该项目目标是简化大数据应用的开发。
- Spring cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践。
- Spring cloud data flow 简化了应用程序的开发和部署, 将精力集中到数据处理的用例上
Data Flow 包含了两个主要的components:
Data Flow Server使用一个嵌入式的servlet容器并且暴露REST端去创建,部署,卸载,销毁Streams和Tasks,查询运行状态,数据分析等等。
Skipper Server是可以将Stream部署到一个或多个平台,提供了版本升级/回退的方法,Data Flow Server会将Stream的部署委托给skipper。
这些服务器可以运行在几个平台上:Cloud Foundry、Kubernetes或您的本地机器上。每个服务器将其状态存储在关系数据库中。
参考:https://dataflow.spring.io/docs/concepts/architecture/#server-components
应用程序以两种类型出现:
参考:https://dataflow.spring.io/docs/concepts/architecture/#application-types
Long-lived applications应该持续运行,Data Flow平台会对applications并进行健康检查确保长周期运行,并在运行失败的时候可以重新启动。
Spring Cloud Stream框架可以帮助我们更加容易得创建基于微服务的流处理程序。我们只需要编写我们自己的核心业务逻辑而无须理会特定的中间件。
如果要使用特定的中间件,只需要通过添加一个Spring Cloud Stream Binder library作为applications的依赖项。下面是已有的中间件binding libraries:
参考:https://dataflow.spring.io/docs/concepts/architecture/#long-lived-applications
通过使用Source、Processor和Sink来描述被注册的application的类型,这三种类型的application被注册到Data Flow中。我们可以通过--type
来指定这三种类型,如下:
dataflow:>app register --name http --type source --uri maven://org.springframework.cloud.stream.app:http-source-rabbit:1.2.0.RELEASE
Successfully registered application 'source:http'
dataflow:>app register --name log --type sink --uri maven://org.springframework.cloud.stream.app:log-sink-rabbit:1.1.0.RELEASE
Successfully registered application 'sink:log'
上面的命令的意思如下:
通过在Data Flow中注册http和log,可以使用Stream Pipeline DSL创建一个stream, Stream DSL 描述了系统中数据流转送的线性序列, 如下面的示例所示:
dataflow:>stream create --name httpStream --definition "http | log"
参考:https://dataflow.spring.io/docs/concepts/architecture/#streams-with-sources-processors-and-sinks
Short-lived Applications一般是运行一段时间(通常是几分钟到几小时),然后终止。比如每天需要在一段时间内把FTP服务器的压缩包文件下载下来->然后解压缩->读取里面的数据->进行持久化存储。这样一个流程每天可能只需要进行一次,但是我们不希望有一个application长期的运行只为了可能每天几分钟到几小时的处理或者计算的时间。所以短生命周期的微服务可以帮我们做到这一点。
Spring Cloud Task允许我们开发短生命周期的微服务,它记录短生命周期应用程序的生命周期事件(如开始时间、结束时间和退出代码)。结合Spring Batch能提供更多丰富的功能。
可以通过--type task
来指定application是一个短期运行的task
dataflow:> app register --name timestamp --type task --uri maven://org.springframework.cloud.task.app:timestamp-task:2.1.0.RELEASE
通过上面的命令我们可以把我们的application 注册到DataFlow中
然后我们用下面的命令来创建一个task
dataflow:> task create tsTask --definition "timestamp"
参考:https://dataflow.spring.io/docs/concepts/architecture/#short-lived-applications
Spring Cloud Data Flow 介绍
Spring Cloud Data Flow Architecture
ETL with Spring Cloud Data Flow
Spring 数据处理框架的演变
Spring系列学习之Spring Cloud Data Flow 微服务数据流
Spring Cloud Data Flow初探
使用Spring Cloud Data Flow实现批量数据处理ETL
Introduction to Spring cloud data flow in 15 minutes
Spring Cloud Data Flow | Microservice Stream Processing |JavaTechie
Spring Tips: Spring Cloud Data Flow
Orchestrating Data Microservices with Spring Cloud Data Flow - Mark Pollack
Spring Cloud Data Flow Reference Guide(current-SNAPSHOT)
Spring Cloud Data Flow Reference Guide
Java-Techie-jt/spring-cloud-data-flow-example
mminella/spring-cloud-task-webinar
spring-cloud/spring-cloud-dataflow-samples
用Spring Cloud和异步微服务进行无服务器计算