宣布 Spring Cloud Stream Applications 2020.0.0 GA 版本发布

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

我们很高兴宣布重新设计的 Spring Cloud Stream 应用的 GA 版本发布 - 2020.0.0

我们希望借此次版本发布公告的机会,来总结我们在夏季开始的博客系列。因此,请将其视为博客系列的第15部分。在这篇博客中,我们将回顾该系列之前的所有文章,但首先,让我们先了解一些发布细节。

发布概览

2020.0.0 GA 版本发布包含了事件流应用的全新重新设计的函数式基础。旧的结构基于 应用 starter 模型,其中应用的关键逻辑作为 starter 模块的一部分提供。然后,这些 starter 构成了应用的基础。虽然这适用于前四代应用 starter(Avogadro、Bacon、Celsius、Darwin 和 Einstein),但有必要将这些 starter 重写为可重用的函数,以便它们可以用于开箱即用应用所需之外的广泛用例。因此,许多旧的应用 starter 被重构和重新设计为 functions、suppliers 和 consumers。对于基于 Spring Cloud Stream binder 的开箱即用应用,我们采用这些函数式组件作为基础来构建它们。其他自定义应用,即使是非流式用例,也可以使用这些函数式组件作为基础进行设计。这些函数可以组合在一起,以实现许多其他数据集成用例。

有一个新的单一 mono 仓库,它托管了所有流应用组件。所有当前可用的 functions 和 applications 的源代码都可以在那里找到。这些集合包含了满足广泛用例的组件,例如数据摄取、ETL、机器学习、分析、文件处理等等。请查看 README 获取更多关于可用内容的信息。

版本变更

从本次发布开始,我们将采用基于日历的版本控制方案。这与使用字母方案(科学家名字)的旧版本列车名称不同。新版本名为 2020.0.0。它遵循 YYYY.MINOR.MICRO 模式,其中 MINOR 是每年从零开始递增的数字。MICRO 段表示之前使用的后缀,其中 .0 是第一个 GA 版本,.1 类似于 .SR1.2 类似于 .SR2,以此类推。值得注意的是,尽管版本列车遵循日历版本控制,但其中的单个组件(functions 和 applications)使用编号方案命名。例如,functions 从 1.0.0 开始,applications 从 3.0.0 开始。

这是新的 Stream Applications 的项目站点。参考文档包含更多关于应用各方面的详细信息。

尽管在发布页面中已提及,但值得一提的是,新应用是使用 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 函数介绍 - 第 0 部分

本系列的第一篇博客为我们提供了该项目的整体愿景和方向。它首先介绍了一些我们如何走到这一步的历史背景。然后为这些新函数以及基于它们构建的 Spring Cloud Stream 应用奠定了基础。

博客 2: Spring Cloud Stream 应用的 Java 函数介绍 - 第 1 部分

本篇详细分析了函数组合,然后深入探讨了函数组合在 Spring Cloud Stream 中的工作方式。这篇博客为我们提供了一些很好的方向,说明如何使用现有的 source 应用来利用与它们捆绑并自动配置的其他函数。它还演示了如何从 source 应用发起任务启动请求。

博客 3: 创建 Supplier 函数并生成 Spring Cloud Stream Source

在这一部分,我们看到了如何从头开始编写一个新的 Supplier 函数,并用它来构建一个 Spring Cloud Stream source。我们以 Spring Integration 中现有的 RSS feed adapter 为例,创建了一个 feed-supplier,然后用它构建了一个 feed source。这篇博客为新的 suppliers 和 sources 提供了足够的模板。

博客 4: 创建用于消费数据的函数并生成 Spring Cloud Stream Sink 应用

与博客 #3 类似,这篇演示了如何编写一个新的 consumer 函数,并使用它来构建一个 Spring Cloud Stream sink 应用。我们以 RSocket 为例,使用 RSocket 中的 fire-and-forget 策略构建了一个 consumer 函数。这篇博客还为创建新的 consumer 函数和 sinks 提供了足够的指南。

博客 5: 案例研究:使用 HTTP Source 和 JDBC Sink 构建并运行流应用

在这篇博客中,我们演示了一个使用 HTTP | JDBC 的数据管道。这是一篇非常详细的博客,展示了如何调用 HTTP POST 端点,然后将通过端点发布的数据插入到关系型数据库中。这篇也非常有趣,它通过从 functions、applications 一直到最终演示如何在 Spring Cloud Data Flow 上部署这个管道,展示了这些应用的完整生命周期。

博客 6: 案例研究:HTTP Request Function 和 Processor

这是一篇非常有趣的博客,其中我们看到了如何使用 HTTP request 函数。HTTP request 函数是一个通用组件,可用于满足许多需要调用 HTTP 端点的不同用例。该函数提供了许多不同的配置选项。这篇博客展示了该函数如何作为独立组件或作为管道的一部分工作。博客探讨了一些图像处理用例和文件源。

博客 7: 案例研究:从文件读取数据并写入 MongoDB

这篇介绍了一个简单的 File | MongoDB 数据管道。数据通过 file source 接收,然后插入到 MongoDB 数据库。博客介绍了底层的 file supplier/source 和 MongoDB consumer/sink。然后展示了如何将管道作为独立部署运行。最后,它展示了如何在 Spring Cloud Data Flow 上编排和运行该管道。

博客 8: 案例研究:关系型数据库 Source 和 File Sink

这篇博客探讨了另一个用例,其中数据库用作 source,从数据库提取的信息发送到目标文件。它探讨了 supporting functions - JDBC supplier 和 file consumer - 然后向我们展示了其配置选项。然后展示了如何将从这些组件构建的应用(JDBC source 和 File sink)作为独立应用使用。博客最后展示了如何添加商业 JDBC 驱动程序来自定义现有的 JDBC source 应用。

博客 9: 案例研究:使用 Spring Cloud Data Flow 进行远程文件摄取

在这一部分,我们探讨了在 Spring Cloud Data Flow 应用管道中看到的另一个常见用例。它向我们展示了如何在 Spring Cloud Data Flow 上部署远程文件摄取工作负载。作为用例的一部分,博客涉及了一些不同的 functions 和 applications,例如 FTP 和 SFTP suppliers 和 sources、Amazon S3 supplier 和 source、task launcher function 及其 sink 等。这篇博客教会了我们如何将各种组件链接起来构建具有复杂用例的强大应用的几点见解。这篇博客最后通过使用 S3 桶作为示例,演示了在 Spring Cloud Data Flow 上的远程文件摄取用例。

博客 10: 案例研究:Aggregator Function 和 Processor

数据聚合是数据集成工作负载中另一个广泛流行的用例。在这篇博客中,我们看到 aggregator 函数如何作为构建需要数据聚合的应用的通道。它向我们展示了如何利用 Spring Integration 对此的支持来实现 aggregator 模式。博客教导我们如何使用各种选项配置该函数,以及它如何预加载对许多不同持久化存储聚合的支持。这篇博客还演示了 aggregator 函数如何与其他函数(如 splitter 和其他自定义函数)组合使用。

博客 11: 案例研究:Elasticsearch sink

在本篇中,我们探讨了 Elasticsearch 的 consumer 函数及其相应的 sink 应用。它查看了各种配置选项,并解释了如何在自定义应用中独立使用该 consumer。博客最后演示了 Elasticsearch sink 如何作为独立应用部署运行。

博客 12: 案例研究:使用 CDC Debezium source 和 Analytics sink 进行实时变更数据捕获 (CDC) 分析

这是一篇非常详细的博客,其中我们看到了变更数据捕获 (CDC) 模式的实际应用。作者深入探讨了 CDC-debezium supplier 及其内部细节,对 CDC 的工作原理进行了分析。然后解释了如何根据该 supplier 构建和使用 CDC-debezium source,并介绍了各种配置选项。这篇博客还探讨了 analytics consumer 函数及其相应的 sink 应用。最后,这篇博客深入阐述了 CDC | analytics 数据管道在 Spring Cloud Data Flow 上的工作方式。一旦部署到 Spring Cloud Data Flow 上并激活管道,它展示了如何将 CDC source 应用产生的分析数据展示在 Grafana 仪表板上。这篇博客最后为我们指明了这类特定函数和应用的未来方向。

博客 13: Spring Cloud Stream 应用测试 - 第 1 部分

这篇博客也非常详细,共有两部分(系列中的系列),阐述了与函数和应用测试相关的所有内容。它深入探讨了测试的核心,解释了各种测试策略,并演示了如何与 testcontainers 配合使用,testcontainers 是我们在测试 stream-applications 组件时大量使用的技术。博客通过开发一个 Couchbase 的 consumer 及其类似的 sink 来演示这些概念。最后,它通过展示 Spring Cloud Stream test binder 如何作为一个好的测试策略来集成测试 sink 应用结束了讨论。

博客 14: Spring Cloud Stream 应用测试 - 第 2 部分

这是博客 #13 的延续,在本篇中,我们展示了如何在真实环境中对已开发的 sink 应用(Couchbase sink)进行集成测试和验收测试,而不是使用 test binder。结合阅读博客 #13 和 #14,可以为我们提供关于使用良好测试策略的许多宝贵见解,不仅适用于 stream 应用组件,而且在更大程度上也适用于通用数据集成用例。

博客 15: 正是你正在阅读的这篇博客。如果你已经读到这里,你即将读完本博客系列的第 15 部分。这篇博客回顾了 stream-applications 的 2020.0.0 版本发布,其中包含我们讨论过的所有组件和应用。正如你所见,在本最终版中,我们还回顾了系列中的所有博客。

总结

本次博客系列中还有许多其他 functions、applications、组件和用例我们未能涵盖。你当然可以在 stream-applications 仓库中找到它们。

感谢你与我们一起完成了这个博客系列的旅程。我们希望你喜欢它。我们非常珍视你的建议、意见和想法。请继续与我们互动,在Github 仓库上创建 bug 报告和功能请求,并在 StackOverflow 上使用 spring-cloud-streamspring-cloud-dataflow 标签提问。这里有一些贡献指南,介绍如何在仓库中添加新功能和组件或修改现有组件。谈到对仓库的贡献,我们欢迎来自社区的任何 pull request。

获取 Spring 资讯

订阅 Spring 资讯,保持联系

订阅

更进一步

VMware 提供培训和认证,为你的进步加速。

了解更多

获取支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,一站式订阅即可获得。

了解更多

近期活动

查看 Spring 社区的所有近期活动。

查看全部