領先一步
VMware 提供培訓和認證,以加速您的進展。
了解更多我謹代表團隊宣布 Spring Cloud Data Flow 1.3 在多個平台上正式 GA 發布
請參考本機伺服器、Cloud Foundry 和 Kubernetes 的入門指南
將串流資料管線編排為一系列微服務應用程式,一直是 Spring Cloud Data Flow 設計的核心價值。在 Data Flow 1.3 中,我們提供了獨立更新來源、處理器和接收器的能力,而無需解除部署並重新部署整個串流。
串流更新和回滾功能是透過將部署流程委派給一個名為 Skipper 的新 Spring Cloud 專案來實作。Skipper 是一個輕量級 Spring Boot 應用程式,專為填補 Data Flow 中的此功能缺口而建置。Skipper 定義了一種套件格式,很像 helm
或 brew
,並且還可以將應用程式部署/解除部署到多個雲端平台:Local、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 版本進行部署。jdbc
和 mongodb
來源和接收器已註冊。然後更新串流以使用轉換器的 0.0.2 版本。只更新 transform
應用程式,部署 0.0.2 版本並解除部署 0.0.1 版本。jdbc
和 mongodb
應用程式保持不變。回滾命令執行相反的操作,將串流帶回到轉換器 0.0.1 版本的狀態。
注意:若要使用 Data Flow 和 Skipper,Data Flow 的 Skipper 功能切換 必須在 Data Flow Server 和 shell 中都啟用。
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 儀表板已更新為利用 Angular 4 並與 Pivotal UI 樣式對齊。主要重點是一致地使用網域模型類別與直接 JSON 字串。這允許對應用程式的狀態進行更細緻的控制,例如,在從分頁列表轉換到詳細資訊頁面並返回時。使用 Compodoc 也改進了 UI 的文件。
扇入是指多個來源將資料全部發送到相同的訊息傳遞目的地。扇出是指在執行階段確定訊息傳遞目的地。此影片顯示了具有這些拓撲的串流 UI 實際運作情況。
有一個新的 UI 控制項可直接從特定節點分支出來以 "點擊串流",以及另一個新的 UI 控制項來管理 具名目的地。這些新功能使建構複雜的串流拓撲更加容易。
以 maven 構件註冊應用程式 的使用者現在可以利用 “update-policy” 功能來覆寫和重新整理 Spring Cloud Data Flow 的內部 maven 快取。例如,在開發中,您可以透過設定 update-policy=always
持續解析 maven 構件的 SNAPSHOT 版本,這將強制下載串流或批次/任務應用程式的最新版本,該版本正在 DSL/儀表板中使用。
根據使用者回饋,使用 http
資源註冊的應用程式將始終被下載,而不會被快取。這有助於更新程式碼的開發生命週期,但不會更新託管在 Web 伺服器上的應用程式 uberjar 的名稱。
在 Skipper 模式下,可以 註冊多個應用程式版本。部署串流時會使用預設版本。您可以使用新的命令 app default
設定預設版本。但是,當升級串流中的應用程式版本時,您必須先在 Data Flow 中註冊它。
此版本為串流和任務/批次名稱以及其他元資料新增了「自動完成」功能。不再需要猜測 - 一切都只需按下 TAB 鍵!查看以下 螢幕錄影,以了解有關進階 shell 功能、提示和技巧的更多資訊。
透過使用函數執行器應用程式,提供對在 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"
有一個 範例 可供您用於試驗此功能。簡化 Spring Cloud Functions 的部署,而無需使用者顯式調用 function-runner
,這在我們的路線圖上。
MQTT 來源 和 MQTT 接收器 應用程式可以與 IoT 裝置互動。
TensorFlow 處理器 可以協助進行即時預測模型評估。查看它的 Twitter-sentiment 模型預測用法,以了解其概念。
為了改進資料科學功能,現在還提供 Python-HTTP 和 Python-Jython 處理器。
新的 bit.ly 連結 Celsius.SR1 和 Clark.GA 可用於大量匯入和註冊 SCDF 中的所有現成應用程式。
簡化 Spring Cloud Functions 的部署,而無需使用者顯式調用 function-runner
,這在我們的路線圖上。
Spring Cloud Data Flow 的 Cloud Foundry Tile 在過去幾個月中一直處於封閉 BETA 狀態。我們根據客戶和現場回饋進行了迭代,它已正式準備好從 BETA 畢業到 1.0 GA 狀態。此版本自動化了 Cloud Foundry 中的佈建(包括指標收集器、skipper、資料庫和訊息代理程式)以及端對端 OAuth/SSO 整合。還有許多其他附加價值,因此請繼續關注更集中的討論、文件 以及 Pivotal Network 中的 Tile 頁面的指標。
Spring Cloud Data Flow 的 helm-chart 將在 pull-request 合併後更新至最新的 1.3 GA 版本。透過此 chart,可以使用以下 helm 命令自動佈建最新版本的 SCDF 以及配套元件(指標收集器、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 與我們聯繫。
請試用看看,分享您的回饋,並考慮為專案做出貢獻!