Spring Cloud Stream 應用程式 2020.0.0 GA 版本發布

工程 | Soby Chacko | 2020 年 12 月 21 日 | ...

我們很高興宣布全新設計的 Spring Cloud Stream 應用程式的 GA 版本 - 2020.0.0

我們想藉由此版本發布公告,為夏季開始的部落格系列文章做個總結。因此,請將其視為部落格系列的第 15 部分。在本部落格中,我們將回顧該系列文章中之前的所有章節,但首先,讓我們來看看一些發布細節。

版本概觀

2020.0.0 GA 版本包含事件串流應用程式的完整改版功能基礎。舊結構基於 應用程式啟動器 模型,其中應用程式的關鍵邏輯作為啟動器模組的一部分提供。然後,啟動器構成應用程式的基礎。雖然它適用於這些應用程式啟動器的前四代(Avogadro、Bacon、Celsius、Darwin 和 Einstein),但有必要將這些啟動器重寫為可重複使用的函數,以便它們可以用於超出開箱即用應用程式中所需範圍的廣泛用例。因此,許多舊的應用程式啟動器被重構和重新設計為函數、供應器和消費者。對於基於開箱即用的 Spring Cloud Stream binder 的應用程式,我們採用這些功能元件,並將其用作構建它們的基礎。其他自訂應用程式,甚至是與串流無關的用例,也可以使用這些功能元件作為基礎來設計。這些函數可以組合在一起,以實現許多其他資料整合用例。

有一個新的單一 單一儲存庫 託管所有串流應用程式元件。所有目前可用的函數和應用程式的原始碼都可以在那裡找到。這些集合包含滿足廣泛用例範圍的元件,例如資料擷取、ETL、機器學習、分析、檔案處理等等。請查看 README 以取得更多可用資訊。

版本變更

從此版本開始,我們將轉向基於 日曆 的版本控制方案。這與使用字母順序(科學家姓名)的舊版本系列名稱不同。新版本名為 2020.0.0。它遵循 YYYY.MINOR.MICRO 模式,其中 MINOR 是一個遞增的數字,每年從零開始。MICRO 段表示先前使用的後綴,其中 .0 是第一個 GA 版本,.1 類似於 .SR1.2 類似於 .SR2,依此類推。值得注意的是,雖然版本系列遵循日曆版本控制,但其中的個別元件(函數和應用程式)是使用編號方案命名的。例如,函數從 1.0.0 開始,應用程式從 3.0.0 開始。

這是新的 Stream 應用程式 的專案網站。參考文件 包含有關應用程式各個方面的更多詳細資訊。

雖然在發布頁面上有註明,但值得一提的是,新應用程式是使用 Spring Boot 2.3.7.RELEASE、Spring Cloud Stream 3.0.10.RELEASE、Spring Integration 5.3.4.RELEASE 和 Spring Cloud Function 3.0.12.RELEASE 構建的。

在 Spring Cloud Data Flow 上使用應用程式

此版本中的 開箱即用應用程式 主要用於在 Spring Cloud Data Flow 上構建資料管道。

對於那些使用 Spring Cloud Data Flow 的使用者,以下是這些新應用程式的批量更新連結。

請注意,這些新連結附加了 -v2,但這是暫時的。由於許多使用者仍在使用 Einstein 版本的應用程式,我們希望他們繼續使用舊連結來存取它們。最終,在幾個月後,我們將把這些 -v2 連結切換為主要連結。

這些應用程式也可以作為獨立部署運行。以下是一些方便的連結,可將這些應用程式用作獨立應用程式。這對於快速測試某些東西很有用。例如,您可以複製所需應用程式的 URL,然後使用 wgetcurl 等下載它。

用於產生應用程式的 Maven 外掛程式

我們使用 Maven 外掛程式 來產生開箱即用的應用程式。此外掛程式也針對此版本從頭開始重新設計。此 README 包含有關如何使用外掛程式來產生應用程式的說明。

使用 GitHub 範本儲存庫構建自訂應用程式

我們提供 GitHub 範本儲存庫,使用它們我們可以構建自訂串流應用程式,這些應用程式提供在 Spring Cloud Data Flow 上運行這些應用程式所需的所有必要基礎結構。換句話說,當您使用範本儲存庫來建立自訂應用程式時,您可以採用該應用程式並以與開箱即用應用程式工作方式相同的方式在 Spring Cloud Data Flow 上運行它。

以下是範本儲存庫的連結。

您可以點擊儲存庫頂部的 Use this template,為新應用程式建立一個新的自訂儲存庫。

部落格系列總結

既然我們已經涵蓋了所有 2020.0.0 版本的詳細資訊,如同之前提到的,讓我們利用這次機會來總結我們在夏季開始的部落格系列。這個系列涵蓋了許多不同的主題和使用案例。您可以在下面找到所有文章的連結,以及每篇部落格中涵蓋內容的摘要描述。

部落格 1: Spring Cloud Stream 應用程式中 Java Function 的介紹 - 第 0 部分

本系列的第一篇部落格文章提供了我們對此專案的整體願景和方向。它從一些關於我們如何走到今天的歷史背景開始。然後,它為這些新的 Function 以及基於它們的 Spring Cloud Stream 應用程式奠定了基礎。

部落格 2: Spring Cloud Stream 應用程式中 Java Function 的介紹 - 第 1 部分

這一集詳細分析了函數組合,然後深入探討了函數組合在 Spring Cloud Stream 中的運作方式。這篇部落格為我們提供了一些很好的方向,說明如何使用現有的 source 應用程式來利用與它們捆綁在一起的其他 Function,以及自動配置。它也演示了如何從 source 應用程式發出 task 啟動請求。

部落格 3: 建立 Supplier Function 並產生 Spring Cloud Stream Source

在這一部分中,我們看到了如何從頭開始編寫一個新的 Supplier Function,並使用它來構建一個 Spring Cloud Stream source。我們使用 Spring Integration 中現有的 RSS feed 适配器作為示例,建立一個 feed-supplier,然後用它來構建一個 feed source。這篇部落格為新的 supplier 和 source 提供了足夠的範本。

部落格 4: 建立一個用於消耗資料並產生 Spring Cloud Stream Sink 應用程式的 Function

與部落格 #3 類似,這一篇演示了如何編寫一個新的 consumer function,並使用它來構建一個 Spring Cloud Stream sink 應用程式。我們使用 RSocket 作為範例,並使用 RSocket 中的 fire-and-forget 策略構建了一個 consumer function。這篇部落格也為建立新的 consumer function 和 sink 提供了足夠的配方。

部落格 5: 案例研究:使用 HTTP Source 和 JDBC Sink 構建並執行一個串流應用程式

在這篇部落格中,我們演示了一個使用 HTTP | JDBC 的資料管道。這是一個非常詳細的部落格,展示了如何調用一個 HTTP POST 端點,然後將透過該端點發佈的資料插入到一個關係資料庫中。這篇部落格也非常有趣,因为它展示了这些应用程序生命周期的完整历程,从 Function、应用程序一直到最后展示如何在 Spring Cloud Data Flow 上部署这个管道。

部落格 6: 案例研究:HTTP Request Function 和 Processor

這是一篇非常引人入勝的部落格,我們在其中看到了 HTTP request function 的使用方法。HTTP request function 是一個通用的元件,可用於滿足許多需要調用 HTTP 端點的不同使用案例。這個 Function 提供了許多不同的配置選項。這篇部落格展示了這個 Function 如何獨立運作以及作為管道的一部分運作。這篇部落格探索了一些影像處理的使用案例和檔案 source。

部落格 7: 案例研究:從檔案讀取並寫入 MongoDB

這篇部落格著眼於一個簡單的 File | MongoDB 資料管道。資料透過檔案 source 接收,然後插入到 MongoDB 資料庫中。這篇部落格著眼於底層的檔案 supplier/source 和 MongoDB consumer/sink。然後,它展示了如何以獨立部署的方式執行該管道。最後,它展示了如何在 Spring Cloud Data Flow 上協調和執行該管道。

部落格 8: 案例研究:關聯式資料庫 Source 和檔案 Sink

這篇部落格著眼於另一個使用案例,其中資料庫用作 source,並且從中提取的資訊被發送到目標檔案。它探索了支援 Function - JDBC supplier 和檔案 consumer — 然後向我們展示了它的配置選項。然後,它展示了如何從這些元件中使用應用程式(JDBC source 和檔案 sink)以獨立方式執行。這篇部落格最後展示了如何添加商業 JDBC 驅動程式來自訂現有的 JDBC source 應用程式。

部落格 9: 案例研究:使用 Spring Cloud Data Flow 進行遠端檔案擷取

在這一部份中,我們研究了另一個在 Spring Cloud Data Flow 應用程式管道中看到的熱門使用案例。它向我們展示了如何在 Spring Cloud Data Flow 上部署遠端檔案擷取工作負載。作為使用案例的一部分,這篇部落格涵蓋了一些不同的 Function 和應用程式,例如 FTP 和 SFTP supplier 和 source、Amazon S3 supplier 和 source、task launcher function 及其 sink 等。這篇部落格教導了我們一些關於如何將各種元件鏈接在一起,以構建具有要求嚴苛的使用案例的強大應用程式的見解。這篇部落格的結尾是透過使用 S3 bucket 作為範例,在 Spring Cloud Data Flow 上演示遠端檔案擷取使用案例。

部落格 10: 案例研究:Aggregator Function 和 Processor

資料聚合是資料整合工作負載中另一個廣泛流行的使用案例。在這篇部落格中,我們看到了 aggregator function 如何充當管道來構建需要資料聚合的應用程式。它向我們展示了如何使用 Spring Integration 中對它的支援,來實現 aggregator 模式。這篇部落格教導了我們如何使用各種選項配置這個 Function,以及它如何預先載入對許多不同聚合持久性儲存的支援。這篇部落格也演示了如何將 aggregator function 與其他 Function(例如 splitter 和其他自訂 Function)組合在一起。

部落格 11: 案例研究:Elasticsearch sink

在這一集中,我們研究了 Elasticsearch 的 consumer function 及其相應的 sink 應用程式。它著眼於各種配置選項,並解釋了如何在自訂應用程式中以獨立方式使用 consumer。這篇部落格的結尾是演示如何以獨立應用程式部署的方式運行 Elasticsearch sink。

部落格 12: 案例研究:使用 CDC Debezium Source 和 Analytics Sink 進行即時變更資料捕獲 (CDC) 分析

這是一篇非常詳細的部落格,我們在其中看到了實際運作中的變更資料捕獲 (CDC) 模式。作者深入研究了 CDC-debezium supplier 及其內部的複雜性,從而為我們分析了 CDC 的運作方式。然後,它透過研究各種配置選項,解釋了如何使用 supplier 製作 CDC-debezium source。這篇部落格也研究了 analytics consumer function 及其相應的 sink 應用程式。最後,這篇部落格深入探討了 CDC | analytics 資料管道如何在 Spring Cloud Data Flow 上運作。一旦部署在 Spring Cloud Data Flow 上並啟用了管道,它就會顯示 CDC source 應用程式的分析如何在 Grafana 儀表板上顯示。這篇部落格的結尾是為我們提供了一些關於這些特定類型的 Function 和應用程式未來方向的提示。

部落格 13: 測試 Spring Cloud Stream 應用程式 - 第 1 部分

這也是另一篇非常詳細的部落格,分為兩個部分(系列中的系列),詳細闡述了所有與 Function 和應用程式的測試運作方式相關的事情。它深入研究了測試的核心,解釋了各種測試策略,並演示了它如何與 testcontainers 協同工作,這是一項我們在測試 stream-application 中的元件時經常使用的技術。這篇部落格透過開發 Couchbase 的 consumer 及其類似的 sink 來演示這些概念。它透過展示 Spring Cloud Stream test binder 如何作為整合測試 sink 應用程式的一個良好測試策略來結束討論。

部落格 14: 測試 Spring Cloud Stream 應用程式 - 第 2 部分

這是部落格 #13 的延續,我們現在看到如何使用真實的環境而不是使用 test binder,來對已開發的 sink 應用程式 (Couchbase sink) 進行整合和驗收測試。一起閱讀部落格 #13 和 #14,可以讓我們對使用良好的測試策略有很多寶貴的見解,不僅適用於 stream 應用程式元件,而且在更大程度上也適用於通用資料整合使用案例。

部落格 15:您正在閱讀的部落格。如果您讀到這裡,您即將完成閱讀本部落格系列的第 15 部分。這篇部落格回顧了 stream-application 的 2020.0.0 版本,其中包含我們討論的所有元件和應用程式。如您所見,我們也在這個最終版本中回顧了該系列中的所有部落格。

結論

在這個部落格系列中,我們沒有涵蓋許多其他的 Function、應用程式、元件和使用案例。您當然可以在 stream-applications 儲存庫中找到它們。

感謝您與我們一起踏上這個部落格系列的旅程。我們希望您喜歡它。我們非常重視您的建議、意見和想法。請繼續透過在 Github 儲存庫上建立錯誤報告和功能請求,以及在 StackOverflow 上使用 spring-cloud-streamspring-cloud-dataflow 標籤提問,來與我們互動。這裡有一些 貢獻指南,用於將新功能和元件添加到儲存庫或修改現有的功能和元件。說到對儲存庫的貢獻,我們歡迎來自社群的任何 pull request。

獲取 Spring 電子報

隨時關注 Spring 電子報

訂閱

取得領先

VMware 提供培訓和認證,以加速您的進度。

了解更多

獲得支持

Tanzu Spring 在一個簡單的訂閱中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二進位檔案。

了解更多

即將到來的活動

查看 Spring 社群中所有即將到來的活動。

查看全部