Spring Cloud Data Flow初體驗以Local模式運行
1 前言
Spring Cloud Data Flow
是什么,雖然已經(jīng)出現(xiàn)一段時間了,但想必很多人不知道,因為在項目中很少有人用。不僅找不到很多中文資料,英文資料也一樣少的可憐。這讓探索的路更加艱辛,也更加有趣吧。
Spring Cloud Data Flow
是基于微服務(wù)的,專門用于流式和批式數(shù)據(jù)處理的框架。
2 基本概念
2.1 數(shù)據(jù)處理模式
數(shù)據(jù)處理有兩種模式,分別是Streaming流式處理
和Batch批次處理
。Streaming
是長時間一直存在的,你數(shù)據(jù)來了我就處理,沒來我就等著,基于消息驅(qū)動。Batch
是處理時間較短的,啟動一次處理一次,處理完就退出任務(wù),需要去觸發(fā)任務(wù)。
一般地,我們會基于Spring Cloud Stream
框架來開發(fā)Streaming
應(yīng)用,而基于Spring Cloud Task
或Spring Batch
框架來開發(fā)Batch
應(yīng)用。完成開發(fā)后,可以打包成兩種形式:
- (1)
Springboot
式的jar
包,可以放在maven
倉庫、文件目錄或HTTP
服務(wù)上; - (2)
Docker
鏡像。
對于Stream
,有三個概念是需要理解的:
- (1)
Source
:消息生產(chǎn)者,負(fù)責(zé)把消息發(fā)送到某個目標(biāo); - (2)
Sink
:消息消費者,負(fù)責(zé)從某個目標(biāo)讀取消息; - (3)
Processor
:聯(lián)合Source
和Sink
,它從某個目標(biāo)消費消息,然后發(fā)送到另一個目標(biāo)。
2.2 特性
Spring Cloud Data Flow
有許多好的特性值得我們學(xué)去使用它:
- 基于云的架構(gòu),可部署在
Cloud Foundry
、Kubernetes
或OpenShift
等。 - 有許多可選擇的開箱即用的流處理和批處理應(yīng)用組件。
- 可自定義應(yīng)用組件,且是基于
Springboot
風(fēng)格的編程模型。 - 有簡單靈活的
DSL(Domain Specific Language)
去定義任務(wù)處理邏輯。 - 有美觀的
Dashboard
能可視化地定義處理邏輯、管理應(yīng)用、管理任務(wù)等。 - 提供了
REST API
,可以在shell
命令行模式下進行交互。
2.3 服務(wù)端組件
服務(wù)端有兩個重要的組件:Data Flow Server
和Skipper Server
。兩者作用不同,互相協(xié)作。
Data Flow Server
的主要作用有:
- 解析
DSL
;校驗和持久化Stream
、Task
和Batch
的定義; - 注冊應(yīng)用如
jar
包應(yīng)用和docker
應(yīng)用; - 部署
Batch
到一個或多個平臺; - 查詢
Job
和Batch
的歷史執(zhí)行記錄; Stream
的配置管理;- 分發(fā)
Stream
部署到Skipper
。 Skipper Server
主要作用有:- 部署
Stream
到一個或多個平臺; - 基于有灰度/綠色更新策略地更新或回滾
Stream
; - 保存每一個
Stream
的描述信息。
可以看出,如果不需要使用Stream
,可以不用部署Skipper
。兩者都需要依賴關(guān)系型數(shù)據(jù)庫(RDBMS
),默認(rèn)會使用內(nèi)置的H2
,支持的數(shù)據(jù)庫有H2
、HSQLDB
、MYSQL
、Oracle
、PostgreSql
、DB2
和SqlServer
。
2.4 運行環(huán)境
優(yōu)秀的Spring
的解耦能力總是特別強,Server
和應(yīng)用可以運行在不同的平臺。我們可以把Data Flow Server
和Skipper Server
部署在Local
、Cloud Foundry
和Kuernetes
,而Server
又可以把應(yīng)用部署在不同的平臺。
- 服務(wù)端Local:應(yīng)用Local/Cloud Foundry/Kuernetes;
- 服務(wù)端Cloud Foundry:應(yīng)用Cloud Foundry/Kuernetes;
- 服務(wù)端Kuernetes:應(yīng)用Cloud Foundry/Kuernetes。
一般情況下,我們會把Server
和應(yīng)用部署在同一平臺上。對于生產(chǎn)環(huán)境,建議還是在Kuernetes
上比較合適。
3 本地模式安裝使用
為了快速體驗,我們使用最簡單的本地運行環(huán)境。
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
應(yīng)用,可以只下載spring-cloud-dataflow-server-2.5.3.RELEASE.jar
。
3.2 啟動應(yīng)用
# 啟動Skipper,默認(rèn)端口為7577 java -jar spring-cloud-skipper-server-2.4.3.RELEASE.jar # 啟動Data Flow Server,默認(rèn)端口為9393 java -jar spring-cloud-dataflow-server-2.5.3.RELEASE.jar
啟動完成后,訪問UI:http://localhost:9393/dashboard
3.3 部署應(yīng)用
3.3.1 添加應(yīng)用Applications
只有添加了應(yīng)用,才能部署Batch
和Stream
。官方提供了示例Applications
,我們直接使用就可以了:
添加成功后,在應(yīng)用列表可以查看:
3.3.2 創(chuàng)建Task
創(chuàng)建Task
可以圖形化創(chuàng)建,也可以通過DSL
來創(chuàng)建,非常方便:
定義好Task
后,輸入名字創(chuàng)建:
3.3.3 運行Task
直接點擊運行:
可以傳入?yún)?shù):
3.3.4 查看Task運行情況
可以查看運行日志:
3.4 Data Flow Shell命令行
除了在網(wǎng)頁上,還可以通過命令行模式來與Server
進行交互。
啟動應(yīng)用:
$ 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 總結(jié)
本文使用的是官方提供的應(yīng)用,我們可以自己開發(fā)應(yīng)用并注冊到Server
上。Local
模式適合開發(fā)環(huán)境適合,生產(chǎn)環(huán)境還是部署在Kubernetes
比較靠譜。后面我們再來探索吧。
到此這篇關(guān)于Spring Cloud Data Flow初體驗以Local模式運行的文章就介紹到這了,更多相關(guān)Spring Cloud Data Flow初體驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot+RabbitMQ?通過fanout模式實現(xiàn)消息接收功能(支持消費者多實例部署)
這篇文章主要介紹了Spring?Boot+RabbitMQ?通過fanout模式實現(xiàn)消息接收(支持消費者多實例部署),本文通過案例場景分析給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03Java通過經(jīng)緯度坐標(biāo)獲取兩個點之間的直線距離的示例
這篇文章主要介紹了Java通過經(jīng)緯度坐標(biāo)獲取兩個點之間的直線距離的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07