Spring Cloud Data Flow初体验,以Local模式运行
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 Task或Spring Batch框架来开发Batch应用。完成开发后,可以打包成两种形式:
- (1)
Springboot式的jar包,可以放在maven仓库、文件目录或HTTP服务上; - (2)
Docker镜像。
对于Stream,有三个概念是需要理解的:
- (1)
Source:消息生产者,负责把消息发送到某个目标; - (2)
Sink:消息消费者,负责从某个目标读取消息; - (3)
Processor:联合Source和Sink,它从某个目标消费消息,然后发送到另一个目标。
2.2 特性
Spring Cloud Data Flow有许多好的特性值得我们学去使用它:
基于云的架构,可部署在
Cloud Foundry、Kubernetes或OpenShift等。有许多可选择的开箱即用的流处理和批处理应用组件。
可自定义应用组件,且是基于
Springboot风格的编程模型。有简单灵活的
DSL(Domain Specific Language)去定义任务处理逻辑。有美观的
Dashboard能可视化地定义处理逻辑、管理应用、管理任务等。提供了
REST API,可以在shell命令行模式下进行交互。
2.3 服务端组件
服务端有两个重要的组件:Data Flow Server和Skipper Server。两者作用不同,互相协作。

Data Flow Server的主要作用有:
- 解析
DSL; - 校验和持久化
Stream、Task和Batch的定义; - 注册应用如
jar包应用和docker应用; - 部署
Batch到一个或多个平台; - 查询
Job和Batch的历史执行记录; Stream的配置管理;- 分发
Stream部署到Skipper。
Skipper Server主要作用有:
- 部署
Stream到一个或多个平台; - 基于有灰度/绿色更新策略地更新或回滚
Stream; - 保存每一个
Stream的描述信息。
可以看出,如果不需要使用Stream,可以不用部署Skipper。两者都需要依赖关系型数据库(RDBMS),默认会使用内置的H2,支持的数据库有H2、HSQLDB、MYSQL、Oracle、PostgreSql、DB2和SqlServer。
2.4 运行环境
优秀的Spring的解耦能力总是特别强,Server和应用可以运行在不同的平台。我们可以把Data Flow Server和Skipper Server部署在Local、Cloud Foundry和Kuernetes,而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
只有添加了应用,才能部署Batch和Stream。官方提供了示例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.RELEASE
Welcome 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模式运行的更多相关文章
- 把Spring Cloud Data Flow部署在Kubernetes上,再跑个任务试试
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Spring Cloud Data Flow在本地跑得好好的,为什么要部署在Kubernetes上呢?主要是因为Kubern ...
- Spring Cloud Data Flow用Shell来操作,方便建立CICD
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! 之前我们用两篇文章讲解了Spring Cloud Data Flow,例子都是用UI操作的,但我们在Linux系统上经常是无 ...
- Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 关于Spring Cloud Data Flow这里不多介绍,有兴趣可以看下面的文章.本文主要介绍如何整合Dat ...
- Spring Cloud Data Flow整合UAA使用外置数据库和API接口
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 之前的文章<Spring Cloud Data Flow整合Cloudfoundry UAA服务做权限控制 ...
- Spring Cloud Data Flow整合UAA之使用LDAP进行账号管理
我最新最全的文章都在南瓜慢说 www.pkslow.com,欢迎大家来喝茶! 1 前言 Spring Cloud Data Flow整合UAA的文章已经写了两篇,之前的方案是把用户信息保存在数据库中: ...
- Spring Cloud Data Flow 中的 ETL
Spring Cloud Data Flow 中的 ETL 影宸风洛 程序猿DD 今天 来源:SpringForAll社区 1 概述 Spring Cloud Data Flow是一个用于构建实时数据 ...
- 【SFA官方译文】:Spring Cloud Data Flow中的ETL
原创: 影宸风洛 SpringForAll社区 昨天 原文链接:https://www.baeldung.com/spring-cloud-data-flow-etl 作者:Norberto Ritz ...
- Spring Cloud 负载均衡初体验
目录 服务搭建 1.注册中心--Eureka Server 2.服务提供方--Service Provider 3.服务消费方--Service Consumer 服务消费 Feign 与断路器 Hy ...
- spring cloud consul上下线体验
spring cloud consul中默认会将spring.application.name作为ID 同一服务起多个实例时,ID默认会变成${spring.application.name}-${s ...
随机推荐
- 开会时CPU 飙升100%同事们都手忙脚乱记一次应急处理过程
告警 正在开会,突然钉钉告警声响个不停,同时市场人员反馈客户在投诉系统登不进了,报504错误.查看钉钉上的告警信息,几台业务服务器节点全部报CPU超过告警阈值,达100%. 赶紧从会上下来,SSH登录 ...
- easyui datagrid 中添加combobox
项目需要,如下图所示 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> &l ...
- 小书MybatisPlus第4篇-表格分页与下拉分页查询
本文为mybatis系列文档的第4篇,前三篇请访问下面的网址. 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小 ...
- toad for oracle 小技巧
在SQL*LOADER 工具上(或者称为SQLLDR,读为:“sequel loader”),因为它仍然是装载数据的主要方法,SQLLDR 能够在极短的时间内装 载庞大数量的数据. 我也是初使用,理解 ...
- 009.Nginx缓存及配置
一 浏览器缓存 1.1 缓存概述 缓存对于Web至关重要,尤其对于大型高负载Web站点.Nginx缓存可作为性能优化的一个重要手段,可以极大减轻后端服务器的负载.通常对于静态资源,即较少经常更新的资源 ...
- P2070 刷墙 (洛谷)
题目描述 Farmer John已经设计了一种方法来装饰谷仓旁边的长栅栏(把栅栏认为是一根一维的线).他把一只画刷绑在他最喜爱的奶牛Bessie身上,之后就去喝一杯冰水,而Bessie隔着栅栏来回走, ...
- 数字孪生,数据驱动下的北京 CBD 智能楼宇三维可视化系统
前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...
- 题解 洛谷 P6142 【[USACO20FEB]Delegation P】
和赛道修建类似,先对\(k\)进行二分,将最值问题转化为判定问题. 在判定一个\(k\)是否合法时,贪心去考虑,一个节点下面的若干条链在合并时,一条链肯定和另一条使它合并后恰好满足长度限制的链合并最优 ...
- 一文说通C#中的异步编程
天天写,不一定就明白. 又及,前两天看了一个关于同步方法中调用异步方法的文章,里面有些概念不太正确,所以整理了这个文章. 一.同步和异步. 先说同步. 同步概念大家都很熟悉.在异步概念出来之前,我 ...
- Mybatis核心模块简介
Configuration 主要字段 Environment:配置DataSource和TransactionFactory ObjectFactory:bean工厂 MapperRegistry:M ...