保持領先
VMware 提供培訓和認證,助您加速前進。
瞭解更多我代表團隊很高興宣佈 Spring Cloud Data Flow 1.3 已在多種平臺上正式釋出。
請參閱 本地伺服器、Cloud Foundry 和 Kubernetes 的入門指南。
流式資料管道作為一系列微服務應用進行編排,一直是 Spring Cloud Data Flow 設計的核心價值。在 Data Flow 1.3 中,我們提供了獨立更新源、處理器和匯的能力,而無需解除安裝和重新部署整個流。
流的更新和回滾功能是透過將部署過程委託給一個新的 Spring Cloud 專案 Skipper 來實現的。Skipper 是一個輕量級的 Spring Boot 應用,專門構建用於填補 Data Flow 在此功能上的空白。Skipper 定義了一種包格式,很像 helm
或 brew
,也可以將應用部署/解除安裝到多個雲平臺:本地、Cloud Foundry 和 Kubernetes。它使用了自 Data Flow 誕生以來就一直是其一部分的 Spring Cloud Deployer 庫。在 SpringOne 2017 上的最新簡報 介紹了 Skipper 以及 與 Data Flow 的整合,提供了更深入的講解。
部署流時,Data Flow 會建立一個描述流及其組成應用的 Skipper 包。然後 Skipper 將應用部署到所需平臺。請求流更新時,只有需要更改的應用會自動重新部署。一個由 Spring Statemachine 例項管理的簡單策略執行更新或回滾步驟。
Data Flow 包含新的流命令,用於執行升級和回滾操作。
dataflow:>app register --name transform --type processor --uri maven://com.eg:transformer:0.0.1
dataflow:>stream create mystream --definition "jdbc | transform | mongodb"
dataflow:>app register --name transform --type processor --uri maven://com.eg:transformer:0.0.2
dataflow:>stream update mystream --properties “version.transform=0.0.2”
dataflow:>stream rollback mystream
在這一系列命令中,流使用了 0.0.1 版本的 transformer 進行部署。jdbc
和 mongodb
源和匯已經註冊。然後流更新為使用 0.0.2 版本的 transformer。只有 transform
應用被更新,0.0.2 版本被部署,0.0.1 版本被解除安裝。jdbc
和 mongodb
應用保持不變。回滾命令執行相反的操作,將流恢復到使用 0.0.1 版本 transformer 的狀態。
注意:要使用 Data Flow 和 Skipper,必須在 Data Flow Server 和 shell 中同時啟用 Data Flow 的 Skipper 功能開關。
DataFlowTemplate 類一直是程式化部署流和任務的主力。然而,它是一個相當底層的 API。我們添加了一個新的流暢風格 API 來建立、部署或啟動流,它更易於使用,並且可以在多個流之間複用 StreamApplication 例項。
StreamApplication source = new StreamApplication("http") .addProperty("server.port", 9900);
StreamApplication processor = new StreamApplication("filter") .addProperty("expression", "payload=='good'");
StreamApplication sink = new StreamApplication("log");
Stream simpleStream = streamBuilder.name("simpleStream") .source(source) .processor(processor) .sink(sink) .create() .deploy();
使用 Stream 例項,您可以查詢流的狀態、解除安裝或銷燬流。
參考指南的 Java DSL 部分 提供了對 DSL 更完整的介紹,Spring Data Flow Samples 倉庫提供了一個 示例,供您在專案中開始使用它。
Data Flow Dashboard 已更新,以利用 Angular 4 並與 Pivotal UI 樣式保持一致。一個主要關注點是持續使用領域模型類,而非直接的 JSON 字串。這使得可以對應用程式狀態進行更細粒度的控制,例如從分頁列表過渡到詳細資訊頁面再返回時。此外,還改進了使用 Compodoc 的 UI 文件。
扇入(Fan-in)指多個源都將資料傳送到同一個訊息目的地。扇出(Fan-out)指在執行時確定訊息目的地。此影片展示了 UI 在具有這些拓撲結構的流中的實際應用。
新增了一個 UI 控制元件,可以直接從特定節點分支出去,用於 "tap 一個流",以及另一個新的 UI 控制元件,用於管理 命名目的地。這些新功能使得構建複雜的流拓撲結構更加容易。
將應用程式註冊為 Maven Artifact 的使用者現在可以利用“update-policy”功能來覆蓋並重新整理 Spring Cloud Data Flow 的內部 Maven 快取。例如,在開發中,您可以透過設定 update-policy=always
來持續解析 Maven Artifact 的 SNAPSHOT 版本,這將強制下載 DSL/Dashboard 中正在使用的流或批次/任務應用的最新版本。
根據使用者反饋,使用 http
資源註冊的應用將始終被下載而不進行快取。這有助於開發生命週期中更新託管在 Web 伺服器上的應用 uberjar 的程式碼(而非名稱)。
在 Skipper 模式下,可以註冊多個應用版本。部署流時使用預設版本。您可以使用新命令 app default
設定預設版本。然而,在流中升級應用版本時,必須先在 Data Flow 中註冊該版本。
此版本為流和任務/批次處理名稱以及其他元資料添加了“自動補全”功能。無需猜測 - 只需按 TAB 鍵即可獲得一切!檢視以下 螢幕錄影,瞭解更多關於高階 shell 功能、技巧和竅門的資訊。
透過使用 function-runner 應用,SCDF 提供了對執行函式的初步支援。使用 Spring Cloud Function 應用建立流時,您需要傳入函式的類名和 jar 位置。
dataflow:> stream create foo --definition "http | function-runner --function.className=com.example.functions.CharCounter --function.location=file:///home/john/myfunction.jar | log"
您可以使用一個示例來試驗此功能。我們的路線圖上包括透過不要求使用者顯式呼叫 function-runner
來簡化 Spring Cloud Functions 的部署。
MQTT source 和 MQTT sink 應用可以與 IoT 裝置互動。
TensorFlow 處理器 可以幫助進行即時預測模型評估。請檢視其 Twitter 情感分析 模型預測用法,以瞭解其作用。
在資料科學能力的基礎上,Python-HTTP 和 Python-Jython 處理器現已可用。
新的 bit.ly 連結 Celsius.SR1 和 Clark.GA 可用於批次匯入和註冊 SCDF 中所有開箱即用的應用。
透過不要求使用者顯式呼叫 function-runner
來簡化 Spring Cloud Functions 的部署,這已列入我們的路線圖。
Spring Cloud Data Flow 的 Cloud Foundry Tile 在過去幾個月一直處於封閉測試(closed-BETA)狀態。我們根據客戶和現場反饋進行了迭代,現已正式從 BETA 階段畢業,達到 1.0 GA 狀態。此版本自動化了配置過程(包括 metrics-collector、skipper、資料庫和訊息代理),並實現了 Cloud Foundry 中的端到端 OAuth/SSO 整合。還有許多其他增值功能,敬請關注更深入的討論、文件以及 Pivotal Network 中 Tile 頁面的指引。
一旦 Pull Request 被合併,Spring Cloud Data Flow 的 Helm Chart 將更新到最新的 1.3 GA 版本。使用此 Chart,可以利用以下 Helm 命令自動配置最新版本的 SCDF 以及配套元件(metrics-collector、skipper、資料庫和訊息代理)。
helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator helm repo update helm install --name scdf incubator/spring-cloud-data-flow --set rbac.create=tru
一如既往,我們歡迎反饋和貢獻,請透過 Stackoverflow、GitHub 或 Gitter 與我們聯絡。
請嘗試使用它,分享您的反饋,並考慮為專案做出貢獻!