zoukankan      html  css  js  c++  java
  • Spring Cloud Data Flow初体验,以Local模式运行

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


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

    多读书,多分享;多写作,多整理。

  • 相关阅读:
    虚函数和纯虚函数
    MS CRM 2011中PartyList类型字段的实例化
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(4)
    MS CRM 2011的自定义与开发(12)——表单脚本扩展开发(2)
    MS CRM 2011的自定义和开发(10)——CRM web服务介绍(第二部分)——IOrganizationService(二)
    MS CRM 2011 SDK 5.08已经发布
    MS CRM 2011 Q2的一些更新
    最近很忙
    Microsoft Dynamics CRM 2011最近的一些更新
    补一篇,Update Rollup 12 终于发布了
  • 原文地址:https://www.cnblogs.com/larrydpk/p/13417670.html
Copyright © 2011-2022 走看看