1 前言

欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章!

Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用。不仅找不到很多中文资料,英文资料也一样少的可怜。这让探索的路更加艰辛,也更加有趣吧。

Spring Cloud Data Flow是基于微服务的,专门用于流式和批式数据处理的框架。

2 基本概念

2.1 数据处理模式

数据处理有两种模式,分别是Streaming流式处理Batch批次处理Streaming是长时间一直存在的,你数据来了我就处理,没来我就等着,基于消息驱动。Batch是处理时间较短的,启动一次处理一次,处理完就退出任务,需要去触发任务。

一般地,我们会基于Spring Cloud Stream框架来开发Streaming应用,而基于Spring Cloud TaskSpring Batch框架来开发Batch应用。完成开发后,可以打包成两种形式:

  • (1)Springboot式的jar包,可以放在maven仓库、文件目录或HTTP服务上;
  • (2)Docker镜像。

对于Stream,有三个概念是需要理解的:

  • (1)Source:消息生产者,负责把消息发送到某个目标;
  • (2)Sink:消息消费者,负责从某个目标读取消息;
  • (3)Processor:联合SourceSink,它从某个目标消费消息,然后发送到另一个目标。

2.2 特性

Spring Cloud Data Flow有许多好的特性值得我们学去使用它:

  • 基于云的架构,可部署在Cloud FoundryKubernetesOpenShift等。

  • 有许多可选择的开箱即用的流处理和批处理应用组件。

  • 可自定义应用组件,且是基于Springboot风格的编程模型。

  • 有简单灵活的DSL(Domain Specific Language)去定义任务处理逻辑。

  • 有美观的Dashboard能可视化地定义处理逻辑、管理应用、管理任务等。

  • 提供了REST API,可以在shell命令行模式下进行交互。

2.3 服务端组件

服务端有两个重要的组件:Data Flow ServerSkipper Server。两者作用不同,互相协作。

Data Flow Server的主要作用有:

  • 解析DSL
  • 校验和持久化StreamTaskBatch的定义;
  • 注册应用如jar包应用和docker应用;
  • 部署Batch到一个或多个平台;
  • 查询JobBatch的历史执行记录;
  • Stream的配置管理;
  • 分发Stream部署到Skipper

Skipper Server主要作用有:

  • 部署Stream到一个或多个平台;
  • 基于有灰度/绿色更新策略地更新或回滚Stream
  • 保存每一个Stream的描述信息。

可以看出,如果不需要使用Stream,可以不用部署Skipper。两者都需要依赖关系型数据库(RDBMS),默认会使用内置的H2,支持的数据库有H2HSQLDBMYSQLOraclePostgreSqlDB2SqlServer

2.4 运行环境

优秀的Spring的解耦能力总是特别强,Server和应用可以运行在不同的平台。我们可以把Data Flow ServerSkipper Server部署在LocalCloud FoundryKuernetes,而Server又可以把应用部署在不同的平台。

  • 服务端Local:应用Local/Cloud Foundry/Kuernetes;
  • 服务端Cloud Foundry:应用Cloud Foundry/Kuernetes;
  • 服务端Kuernetes:应用Cloud Foundry/Kuernetes。

一般情况下,我们会把Server和应用部署在同一平台上。对于生产环境,建议还是在Kuernetes上比较合适。

3 本地模式安装使用

为了快速体验,我们使用最简单的本地运行环境。

3.1 下载Jar包

下载以下三个jar包:

wget https://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-server/2.5.3.RELEASE/spring-cloud-dataflow-server-2.5.3.RELEASE.jar
wget https://repo.spring.io/release/org/springframework/cloud/spring-cloud-dataflow-shell/2.5.3.RELEASE/spring-cloud-dataflow-shell-2.5.3.RELEASE.jar
wget https://repo.spring.io/release/org/springframework/cloud/spring-cloud-skipper-server/2.4.3.RELEASE/spring-cloud-skipper-server-2.4.3.RELEASE.jar

如果是简单的Batch应用,可以只下载spring-cloud-dataflow-server-2.5.3.RELEASE.jar

3.2 启动应用

# 启动Skipper,默认端口为7577
java -jar spring-cloud-skipper-server-2.4.3.RELEASE.jar
# 启动Data Flow Server,默认端口为9393
java -jar spring-cloud-dataflow-server-2.5.3.RELEASE.jar

启动完成后,访问UI:http://localhost:9393/dashboard

3.3 部署应用

3.3.1 添加应用Applications

只有添加了应用,才能部署BatchStream。官方提供了示例Applications,我们直接使用就可以了:

添加成功后,在应用列表可以查看:

3.3.2 创建Task

创建Task可以图形化创建,也可以通过DSL来创建,非常方便:

定义好Task后,输入名字创建:

3.3.3 运行Task

直接点击运行:

可以传入参数:

3.3.4 查看Task运行情况

可以查看运行日志:

3.4 Data Flow Shell命令行

除了在网页上,还可以通过命令行模式来与Server进行交互。

启动应用:

$ java -jar spring-cloud-dataflow-shell-2.5.3.RELEASE.jar ____                              ____ _                __/ ___| _ __  _ __(_)_ __   __ _   / ___| | ___  _   _  __| |\___ \| '_ \| '__| | '_ \ / _` | | |   | |/ _ \| | | |/ _` |___) | |_) | |  | | | | | (_| | | |___| | (_) | |_| | (_| ||____/| .__/|_|  |_|_| |_|\__, |  \____|_|\___/ \__,_|\__,_|____ |_|    _          __|___/                 __________|  _ \  __ _| |_ __ _  |  ___| | _____      __  \ \ \ \ \ \| | | |/ _` | __/ _` | | |_  | |/ _ \ \ /\ / /   \ \ \ \ \ \| |_| | (_| | || (_| | |  _| | | (_) \ V  V /    / / / / / /|____/ \__,_|\__\__,_| |_|   |_|\___/ \_/\_/    /_/_/_/_/_/2.5.3.RELEASEWelcome to the Spring Cloud Data Flow shell. For assistance hit TAB or type "help".
Successfully targeted http://localhost:9393/dataflow:>app list
╔═══╤══════╤═════════╤════╤════════════════════╗
║app│source│processor│sink│        task        ║
╠═══╪══════╪═════════╪════╪════════════════════╣
║   │      │         │    │composed-task-runner║
║   │      │         │    │timestamp-batch     ║
║   │      │         │    │timestamp           ║
╚═══╧══════╧═════════╧════╧════════════════════╝dataflow:>

4 总结

本文使用的是官方提供的应用,我们可以自己开发应用并注册到Server上。Local模式适合开发环境适合,生产环境还是部署在Kubernetes比较靠谱。后面我们再来探索吧。


欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

多读书,多分享;多写作,多整理。

Spring Cloud Data Flow初体验,以Local模式运行相关推荐

  1. Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理

    我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶! 1 前言 Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库 ...

  2. Spring Cloud Data Flow整合UAA使用外置数据库和API接口

    我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶! 1 前言 之前的文章<Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限 ...

  3. Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制

    我最新最全的文章都在 南瓜慢说 www.pkslow.com ,欢迎大家来喝茶! 1 前言 关于Spring Cloud Data Flow这里不多介绍,有兴趣可以看下面的文章.本文主要介绍如何整合D ...

  4. Spring Cloud Data Flow 中的 ETL

    来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据管道和批处理过程的云原生工具包. Spring Cloud Data Flow已准备好用 ...

  5. Spring Cloud Data Flow手动安装

    前言 Spring Cloud Data Flow 2.4.2 win7 简介 Microservice based Streaming and Batch data processing for C ...

  6. Spring Cloud Data Flow系列教程简介-1

    简介 前言 Spring Cloud data flow 为基于微服务的分布式流处理和批处理数据通道提供了一系列模型和最佳实践. Spring Cloud Data Flow 提供了为流和批处理数据管 ...

  7. Spring Cloud Data Flow

    Spring Cloud Data Flow 1 Spring Cloud Data Flow 介绍 2 Local Server for development 3 Data Flow Server ...

  8. Spring Cloud Data Flow 简介

    Spring Cloud Data Flow 介绍 1.Data flow 是一个用于开发和执行大范围数据处理其模式包括ETL,批量运算和持续运算的统一编程模型和托管服务. 2.对于在现代运行环境中可 ...

  9. spring cloud data flow 调研

    # Spring Cloud 相关库设计了Spring Initializr的特别版本 https://start-scs.cfapps.io/ Demo https://www.baeldung.c ...

最新文章

  1. GIT:如何管理本机的多个ssh密钥(多个远程仓库账号)
  2. Redhat 6.3 yum 本地源配置
  3. .NET Core中的性能测试工具BenchmarkDotnet
  4. linux7.0安装过程详解,图解红旗Linux7.0安装过程.doc
  5. 前端中实时显示当前时间的js代码
  6. Nginx详解+身份验证+虚拟主机+反向代理负载均衡
  7. win10 64位 安装TensorFlow
  8. 建立RHELAS4下面的Yum本地源
  9. python3 txt 读写_Python3 读写txt文件
  10. C语言蓝桥杯刷题:等差素数列
  11. Swiper 参数说明
  12. Java 算法:带权图Weighted Graph
  13. 推荐系统-推荐冷启动问题
  14. ps作图缩小有锯齿的解决方法
  15. 碳纳米管(CNT)的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. infiniband rmmod: ERROR: Module xxxx is in use by:yyyyy
  17. 视频教程-软考系统集成项目管理工程师视频教程(中)-软考
  18. php威客网,最新带支付宝支付接口的PHP威客任务网站完整版源码破_界面漂亮整洁...
  19. [已解决] Windows 10 印象笔记桌面图标/开始菜单图标显示不正常
  20. kubernetes+docker安装及部署服务

热门文章

  1. dia 在Linux(ubuntu)下无法输入中文的解决办法
  2. Donald E. Knuth
  3. PHP time() 函数
  4. Python实现双X轴双Y轴绘图
  5. 开源NoSQL数据库ArangoDB浅析
  6. 我的世界网易版java材质包下载_网易我的世界材质包怎么用 安装教程
  7. 射频通路 隔直_偏置电路及其构成的射频功率放大器的制作方法
  8. 插座学院L1L2L3
  9. Python网络爬虫之基本项目:爬取网易新闻排行榜
  10. Matplotlib学习笔记——密度线与等高线