Spring Cloud Data Flow初體驗,以Local模式運行

1 前言

歡迎訪問 南瓜慢說 www.pkslow.com獲取更多精彩文章!

Spring Cloud Data Flow是什麼,雖然已經出現一段時間了,但想必不少人不知道,由於在項目中不多有人用。不只找不到不少中文資料,英文資料也同樣少的可憐。這讓探索的路更加艱辛,也更加有趣吧。java

Spring Cloud Data Flow是基於微服務的,專門用於流式和批式數據處理的框架。spring

2 基本概念

2.1 數據處理模式

數據處理有兩種模式,分別是Streaming流式處理Batch批次處理Streaming是長時間一直存在的,你數據來了我就處理,沒來我就等着,基於消息驅動。Batch是處理時間較短的,啓動一次處理一次,處理完就退出任務,須要去觸發任務。docker

通常地,咱們會基於Spring Cloud Stream框架來開發Streaming應用,而基於Spring Cloud TaskSpring Batch框架來開發Batch應用。完成開發後,能夠打包成兩種形式:shell

  • (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。二者做用不一樣,互相協做。bash

Data Flow Server的主要做用有:微信

  • 解析DSL
  • 校驗和持久化StreamTaskBatch的定義;
  • 註冊應用如jar包應用和docker應用;
  • 部署Batch到一個或多個平臺;
  • 查詢JobBatch的歷史執行記錄;
  • Stream的配置管理;
  • 分發Stream部署到Skipper

Skipper Server主要做用有:架構

  • 部署Stream到一個或多個平臺;
  • 基於有灰度/綠色更新策略地更新或回滾Stream
  • 保存每個Stream的描述信息。

能夠看出,若是不須要使用Stream,能夠不用部署Skipper。二者都須要依賴關係型數據庫(RDBMS),默認會使用內置的H2,支持的數據庫有H2HSQLDBMYSQLOraclePostgreSqlDB2SqlServerapp

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比較靠譜。後面咱們再來探索吧。


歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...

多讀書,多分享;多寫做,多整理。

相關文章
相關標籤/搜索