欢迎访问 南瓜慢说 www.pkslow.com获取更多精彩文章!
Spring Cloud Data Flow
是什么,虽然已经出现一段时间了,但想必不少人不知道,由于在项目中不多有人用。不只找不到不少中文资料,英文资料也同样少的可怜。这让探索的路更加艰辛,也更加有趣吧。java
Spring Cloud Data Flow
是基于微服务的,专门用于流式和批式数据处理的框架。spring
数据处理有两种模式,分别是Streaming流式处理
和Batch批次处理
。Streaming
是长时间一直存在的,你数据来了我就处理,没来我就等着,基于消息驱动。Batch
是处理时间较短的,启动一次处理一次,处理完就退出任务,须要去触发任务。docker
通常地,咱们会基于Spring Cloud Stream
框架来开发Streaming
应用,而基于Spring Cloud Task
或Spring Batch
框架来开发Batch
应用。完成开发后,能够打包成两种形式:shell
Springboot
式的jar
包,能够放在maven
仓库、文件目录或HTTP
服务上;Docker
镜像。对于Stream
,有三个概念是须要理解的:数据库
Source
:消息生产者,负责把消息发送到某个目标;Sink
:消息消费者,负责从某个目标读取消息;Processor
:联合Source
和Sink
,它从某个目标消费消息,而后发送到另外一个目标。Spring Cloud Data Flow
有许多好的特性值得咱们学去使用它:编程
Cloud Foundry
、Kubernetes
或OpenShift
等。Springboot
风格的编程模型。DSL(Domain Specific Language)
去定义任务处理逻辑。Dashboard
能可视化地定义处理逻辑、管理应用、管理任务等。REST API
,能够在shell
命令行模式下进行交互。服务端有两个重要的组件:Data Flow Server
和Skipper Server
。二者做用不一样,互相协做。bash
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
。app
优秀的Spring
的解耦能力老是特别强,Server
和应用能够运行在不一样的平台。咱们能够把Data Flow Server
和Skipper Server
部署在Local
、Cloud Foundry
和Kuernetes
,而Server
又能够把应用部署在不一样的平台。
通常状况下,咱们会把Server
和应用部署在同一平台上。对于生产环境,建议仍是在Kuernetes
上比较合适。
为了快速体验,咱们使用最简单的本地运行环境。
下载如下三个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
。
# 启动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
只有添加了应用,才能部署Batch
和Stream
。官方提供了示例Applications
,咱们直接使用就能够了:
添加成功后,在应用列表能够查看:
建立Task
能够图形化建立,也能够经过DSL
来建立,很是方便:
定义好Task
后,输入名字建立:
直接点击运行:
能够传入参数:
能够查看运行日志:
除了在网页上,还能够经过命令行模式来与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:>
本文使用的是官方提供的应用,咱们能够本身开发应用并注册到Server
上。Local
模式适合开发环境适合,生产环境仍是部署在Kubernetes
比较靠谱。后面咱们再来探索吧。
欢迎关注微信公众号<南瓜慢说>,将持续为你更新...
多读书,多分享;多写做,多整理。