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

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

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

3.3 部署应用

3.3.1 添加应用Applications

只有添加了应用,才能部署BatchStream。官方提供了示例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初体验内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 如何把Spring Cloud Data Flow部署在Kubernetes上

    1 前言 Spring Cloud Data Flow在本地跑得好好的,为什么要部署在Kubernetes上呢?主要是因为Kubernetes能提供更灵活的微服务管理:在集群上跑,会更安全稳定.更合理利用物理资源. Spring Cloud Data Flow入门简介请参考:Spring Cloud Data Flow初体验,以Local模式运行 2 部署Data Flow到Kubernetes 以简单为原则,我们依然是基于Batch任务,不部署与Stream相关的组件. 2.1 下载GitHu

  • 详解Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失

    在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离. 在使用线程隔离的时候,有个问题是必须要解决的,那就是在某些业务场景下通过ThreadLocal来在线程里传递数据,用信号量是没问题的,从请求进来,但后续的流程都是通一个线程. 当隔离模式为线程时,Hystrix会将请求放入Hystrix的线程池中去执行,这个时候某个请求就有A线程变成B线程了,ThreadLocal必然消失了. 下面我

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

    1 前言 Spring Cloud Data Flow是什么,虽然已经出现一段时间了,但想必很多人不知道,因为在项目中很少有人用.不仅找不到很多中文资料,英文资料也一样少的可怜.这让探索的路更加艰辛,也更加有趣吧. Spring Cloud Data Flow是基于微服务的,专门用于流式和批式数据处理的框架. 2 基本概念 2.1 数据处理模式 数据处理有两种模式,分别是Streaming流式处理和Batch批次处理.Streaming是长时间一直存在的,你数据来了我就处理,没来我就等着,基于消

  • 详解Spring Cloud Config采用Git存储时两种常用的配置策略

    由于Spring Cloud Config默认采用了Git存储,相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略.即便大家都使用了Git存储,可能还有各种不同的配置方式,本文就来介绍一下两种常用的配置策略. 第一种:多个项目公用一个Git仓库,用不同的目录区分项目 主要的配置项如下: spring.cloud.config.server.git.uri=https://github.com/dyc87112/config-repo.git spring.cloud.con

  • 聊聊Spring Cloud Cli 初体验

    SpringBoot CLI 是spring Boot项目的脚手架工具.而本文的Spring Cloud cli则是基于SpringBoot Client的一个插件,用于支持Cloud相关的组件. 由于各种原因,目前用起来并不是很爽: repo 经常连不上 启动非常慢,要等半天 遇到问题排查不是很容易 但是,功能很有意思,值得期待.也许有一天变的像 docker swarm 那样直接启动分布式的服务,就完美了. SpringBoot Client文档: https://docs.spring.i

  • java Spring Boot的介绍与初体验

    目录 Spring Boot 介绍 系统要求 构建工具 Servlet 容器 初体验 总结 Spring Boot 介绍 Spring Boot用于创建可运行的.独立的.生产级的基于Spring的应用程序.Spring Boot对Spring和第三方库持约定大于配置的观念,以便可以轻松上手.大多数Spring Boot应用程序只需要很少的配置. Spring Boot可以通过使用java -jar或更传统的war包部署来启动Java应用程序,Spring Boot的目标是: 为所有Spring开

  • springcloud初体验(真香)

    一.微服务简介 Ⅰ.我对微服务的理解 微服务是软件开发的一种架构方式,由单一的应用小程序构成的小服务:一个软件系统由多个服务组成:在微服务中,服务是细粒度的,协议是轻量级的(部署简单.性能开销小) Ⅱ.为什么要使用微服务? 随着时代的发展,单体架构(MVC三层模型)越来越不能满足企业的要求:业务规模的不断扩大.团队开发人员的增多,使得单体架构出现了以下几个问题: (1)部署效率低(比如代码量非常多,依赖的包非常多,那么每一次编译打包.部署测试的时间就会很久) (2)团队开发成本高(如果某个模块出

  • MyBatis入门初体验之使用大全(2)

    MyBatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .2013年11月迁移到Github. iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架.iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO) 1.所需jar包

  • Spring Cloud学习教程之DiscoveryClient的深入探究

    前言 当我们使用@DiscoveryClient注解的时候,会不会有如下疑问:它为什么会进行注册服务的操作,它不是应该用作服务发现的吗?下面我们就来深入的探究一下其源码. 一.Springframework的LifeCycle接口 要搞明白这个问题我们需要了解一下这个重要的接口: /* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (

  • Spring Cloud Ribbon负载均衡器处理方法

    接下来撸一撸负载均衡器的内部,看看是如何获取服务实例,获取以后做了哪些处理,处理后又是如何选取服务实例的. 分成三个部分来撸: 配置 获取服务 选择服务 配置 在上一篇<撸一撸Spring Cloud Ribbon的原理>的配置部分可以看到默认的负载均衡器是ZoneAwareLoadBalancer. 看一看配置类. 位置: spring-cloud-netflix-core-1.3.5.RELEASE.jar org.springframework.cloud.netflix.ribbon

  • Spring Cloud 2020.0.0正式发布再见了Netflix

    ✍前言 你好,我是YourBatman. 北京时间2020-12-22深夜,Spring Cloud 2020.0.0版本正式发布.2020.0.0是第一个使用新版本方案的Spring Cloud发行版本. 关于版本号这里啰嗦几句:在这之前,Spring Cloud的Release Train名称采用的是伦敦地铁站命名方式,如:Hoxton.Greenwich等. 说明:2020.0.0版本又名Ilford(地铁站名),因为此项目3月后才按照新规更名,估计是为了团队内沟通方便吧,你也可以理解为它

随机推荐