1 前言
Spring Cloud Data Flow
是什么,雖然已經出現一段時間了,但想必很多人不知道,因為在項目中很少有人用。不僅找不到很多中文資料,英文資料也一樣少的可憐。這讓探索的路更加艱辛,也更加有趣吧。
Spring Cloud Data Flow
是基于微服務的,專門用于流式和批式數據處理的框架。
2 基本概念
2.1 數據處理模式
數據處理有兩種模式,分別是Streaming流式處理
和Batch批次處理
。Streaming
是長時間一直存在的,你數據來了我就處理,沒來我就等著,基于消息驅動。Batch
是處理時間較短的,啟動一次處理一次,處理完就退出任務,需要去觸發任務。
一般地,我們會基于Spring Cloud Stream
框架來開發Streaming
應用,而基于Spring Cloud Task
或Spring Batch
框架來開發Batch
應用。完成開發后,可以打包成兩種形式:
-
(1)
Springboot
式的jar
包,可以放在maven
倉庫、文件目錄或HTTP
服務上; -
(2)
Docker
鏡像。
對于Stream
,有三個概念是需要理解的:
-
(1)
Source
:消息生產者,負責把消息發送到某個目標; -
(2)
Sink
:消息消費者,負責從某個目標讀取消息; -
(3)
Processor
:聯合Source
和Sink
,它從某個目標消費消息,然后發送到另一個目標。
2.2 特性
Spring Cloud Data Flow
有許多好的特性值得我們學去使用它:
-
基于云的架構,可部署在
Cloud Foundry
、Kubernetes
或OpenShift
等。 - 有許多可選擇的開箱即用的流處理和批處理應用組件。
-
可自定義應用組件,且是基于
Springboot
風格的編程模型。 -
有簡單靈活的
DSL(Domain Specific Language)
去定義任務處理邏輯。 -
有美觀的
Dashboard
能可視化地定義處理邏輯、管理應用、管理任務等。 -
提供了
REST API
,可以在shell
命令行模式下進行交互。
2.3 服務端組件
服務端有兩個重要的組件:Data Flow Server
和Skipper Server
。兩者作用不同,互相協作。
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
。
2.4 運行環境
優秀的Spring
的解耦能力總是特別強,Server
和應用可以運行在不同的平臺。我們可以把Data Flow Server
和Skipper Server
部署在Local
、Cloud Foundry
和Kuernetes
,而Server
又可以把應用部署在不同的平臺。
- 服務端Local:應用Local/Cloud Foundry/Kuernetes;
- 服務端Cloud Foundry:應用Cloud Foundry/Kuernetes;
- 服務端Kuernetes:應用Cloud Foundry/Kuernetes。
一般情況下,我們會把Server
和應用部署在同一平臺上。對于生產環境,建議還是在Kuernetes
上比較合適。
3 本地模式安裝使用
為了快速體驗,我們使用最簡單的本地運行環境。
3.1 下載Jar包
下載以下三個jar
包:
1
2
3
|
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 啟動應用
1
2
3
4
|
# 啟動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
只有添加了應用,才能部署Batch
和Stream
。官方提供了示例Applications
,我們直接使用就可以了:
添加成功后,在應用列表可以查看:
3.3.2 創建Task
創建Task
可以圖形化創建,也可以通過DSL
來創建,非常方便:
定義好Task
后,輸入名字創建:
3.3.3 運行Task
直接點擊運行:
可以傳入參數:
3.3.4 查看Task運行情況
可以查看運行日志:
3.4 Data Flow Shell命令行
除了在網頁上,還可以通過命令行模式來與Server
進行交互。
啟動應用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
$ 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初體驗內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://www.cnblogs.com/larrydpk/p/13417670.html