歡迎訪問 南瓜慢說 www.pkslow.com獲取更多精彩文章!
Spring Cloud Data Flow
是什麼,雖然已經出現一段時間了,但想必不少人不知道,由於在項目中不多有人用。不只找不到不少中文資料,英文資料也同樣少的可憐。這讓探索的路更加艱辛,也更加有趣吧。java
Spring Cloud Data Flow
是基於微服務的,專門用於流式和批式數據處理的框架。spring
數據處理有兩種模式,分別是Streaming流式處理
和Batch批次處理
。Streaming
是長時間一直存在的,你數據來了我就處理,沒來我就等着,基於消息驅動。Batch
是處理時間較短的,啓動一次處理一次,處理完就退出任務,須要去觸發任務。docker
通常地,咱們會基於Spring Cloud Stream
框架來開發Streaming
應用,而基於Spring Cloud Task
或Spring Batch
框架來開發Batch
應用。完成開發後,能夠打包成兩種形式:shell
Springboot
式的jar
包,能夠放在maven
倉庫、文件目錄或HTTP
服務上;Docker
鏡像。對於Stream
,有三個概念是須要理解的:數據庫
Source
:消息生產者,負責把消息發送到某個目標;Sink
:消息消費者,負責從某個目標讀取消息;Processor
:聯合Source
和Sink
,它從某個目標消費消息,而後發送到另外一個目標。Spring Cloud Data Flow
有許多好的特性值得咱們學去使用它:編程
Cloud Foundry
、Kubernetes
或OpenShift
等。Springboot
風格的編程模型。DSL(Domain Specific Language)
去定義任務處理邏輯。Dashboard
能可視化地定義處理邏輯、管理應用、管理任務等。REST API
,能夠在shell
命令行模式下進行交互。服務端有兩個重要的組件:Data Flow Server
和Skipper Server
。二者做用不一樣,互相協做。bash
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
。app
優秀的Spring
的解耦能力老是特別強,Server
和應用能夠運行在不一樣的平臺。咱們能夠把Data Flow Server
和Skipper Server
部署在Local
、Cloud Foundry
和Kuernetes
,而Server
又能夠把應用部署在不一樣的平臺。
通常狀況下,咱們會把Server
和應用部署在同一平臺上。對於生產環境,建議仍是在Kuernetes
上比較合適。
爲了快速體驗,咱們使用最簡單的本地運行環境。
下載如下三個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
。
# 啓動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
只有添加了應用,才能部署Batch
和Stream
。官方提供了示例Applications
,咱們直接使用就能夠了:
添加成功後,在應用列表能夠查看:
建立Task
能夠圖形化建立,也能夠經過DSL
來建立,很是方便:
定義好Task
後,輸入名字建立:
直接點擊運行:
能夠傳入參數:
能夠查看運行日誌:
除了在網頁上,還能夠經過命令行模式來與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:>
本文使用的是官方提供的應用,咱們能夠本身開發應用並註冊到Server
上。Local
模式適合開發環境適合,生產環境仍是部署在Kubernetes
比較靠譜。後面咱們再來探索吧。
歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...
多讀書,多分享;多寫做,多整理。