共计 3501 个字符,预计需要花费 9 分钟才能阅读完成。
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
比拟靠谱。前面咱们再来摸索吧。
欢送关注微信公众号 <南瓜慢说>,将继续为你更新 …
多读书,多分享;多写作,多整顿。