52

Spring Cloud Data Flow初体验,以Local模式运行

 3 years ago
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 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 。两者作用不同,互相协作。

RnqERnZ.png!web

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

RBVnAfi.png!web

3.3 部署应用

3.3.1 添加应用Applications

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

zIZJNzE.png!web

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

a6zeYzn.png!web

3.3.2 创建Task

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

ER7JJfF.png!web

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

eIzq22m.png!web

3.3.3 运行Task

直接点击运行:

vYjyqem.png!web

可以传入参数:

qeuEv2u.png!web

3.3.4 查看Task运行情况

AbeE3uf.png!web

2A7FVjR.png!web

可以查看运行日志:

VFfMZf.png!web

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 比较靠谱。后面我们再来探索吧。

参考官方资料:

概述

概念

本地模式安装

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

Y7z2U3.png!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK