Spring Cloud Data Flow简介

Spring Cloud Data Flow介绍

  • 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 简化了应用程序的开发和部署, 将精力集中到数据处理的用例上

Server Components

Data Flow 包含了两个主要的components:

  • Data Flow Server
  • Skipper Server

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

Application Types

应用程序以两种类型出现:

  • Long-lived applications(Message-driven applications/Spring Cloud Stream):周期长的流处理,程序通过消息中间件消费和产生连续不断的数据
  • Short-lived applications(Spring Cloud Task/Spring Batch):短周期的任务处理,程序处理有限的数据集合然后中断

参考:https://dataflow.spring.io/docs/concepts/architecture/#application-types

Long-lived Applications

Long-lived applications应该持续运行,Data Flow平台会对applications并进行健康检查确保长周期运行,并在运行失败的时候可以重新启动。

Spring Cloud Stream框架可以帮助我们更加容易得创建基于微服务的流处理程序。我们只需要编写我们自己的核心业务逻辑而无须理会特定的中间件。
如果要使用特定的中间件,只需要通过添加一个Spring Cloud Stream Binder library作为applications的依赖项。下面是已有的中间件binding libraries:

  • RabbitMQ
  • Kafka
  • Kafka Streams
  • Amazon Kinesis
  • Google Pub/Sub
  • Solace PubSub+
  • Azure Event Hubs

参考:https://dataflow.spring.io/docs/concepts/architecture/#long-lived-applications

Streams with Sources, Processors and Sinks
  • Source: 将Message发送到目的地的producer.(生成数据)
  • Sink: 从目标读取Message的consumer.(消费数据)
  • Processor: Processor使用来自目的地的消息并生成要发送到另一个目的地的消息.(消费和生产数据)

通过使用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'

上面的命令的意思如下:

  • 第一条命令:注册name为http的application,并指定type为source到data flow中,并指定了获取application的uri
  • 第二条命令:注册name为log的application,并指定type为sink到data flow中,并指定了获取application的uri

通过在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

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和异步微服务进行无服务器计算

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐