Spring Cloud Data Flow初体验,以Local模式运行
source link: https://www.pkslow.com/archives/spring-cloud-data-flow
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
1 前言
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
比较靠谱。后面我们再来探索吧。
参考官方资料:
欢迎关注微信公众号< 南瓜慢说 >,将持续为你更新...
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK