宣布 Spring Cloud Stream 应用 2020.0.0 GA 版本发布

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

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

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

发布概述

2020.0.0 GA 版本包含了针对事件流应用完全改进的功能基础。旧的结构基于 应用启动器 模型,其中应用的关键逻辑作为启动器模块的一部分提供。启动器随后构成应用的基础。虽然它适用于前四代应用启动器(阿伏伽德罗、培根、摄氏度、达尔文和爱因斯坦),但认为有必要将这些启动器重写为可重用的函数,以便它们可以用于超出开箱即用应用所需的各种用例。因此,许多旧的应用启动器被重构并重新设计为函数、供应商和消费者。对于开箱即用的 Spring Cloud Stream 绑定器驱动的应用,我们采用这些功能组件并使用它们作为构建的基础。其他自定义应用,甚至非流式用例,都可以使用这些功能组件作为基础进行设计。这些函数可以 组合在一起以实现许多其他数据集成用例。

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

版本变更

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

以下是新 流应用 的项目站点。 参考文档 包含有关应用各个方面的更多详细信息。

尽管在发布页面上已注明,但值得一提的是,新应用使用 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,但这只是临时的。由于许多用户仍在使用 爱因斯坦 版本的应用,我们希望他们能够继续使用旧链接访问它们。最终,在几个月后,我们将把这些 -v2 链接切换为主链接。

这些应用也可以作为独立部署运行。以下是一些使用这些应用作为独立应用的便捷链接。例如,这对于快速测试某些内容非常有用。您只需复制所需应用的 URL,然后使用 wgetcurl 等下载它即可。

用于生成应用的 Maven 插件

我们使用 Maven 插件 生成开箱即用应用。此插件也针对此版本进行了从头到尾的重新设计。此 自述文件 包含有关如何使用插件生成应用的说明。

使用 GitHub 模板库构建自定义应用

我们提供 GitHub 模板库,使用它们我们可以构建自定义流应用,这些应用提供了在 Spring Cloud Data Flow 上运行这些应用所需的所有必要基础设施。换句话说,当您使用模板库创建自定义应用时,您可以采用该应用并以与开箱即用应用相同的方式在 Spring Cloud Data Flow 上运行它。

以下是模板库的链接。

您可以点击存储库顶部的 使用此模板 创建新应用的新自定义存储库。

博客系列总结

现在我们已经介绍了所有2020.0.0版本的发布细节,如前所述,让我们借此机会总结一下我们在夏季开始的博客系列。该系列涵盖了许多不同的主题和用例。在下面,您可以找到所有博客的链接以及每个博客内容的摘要描述。

博客 1: 为 Spring Cloud Stream 应用引入 Java 函数 - 第 0 部分

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

博客 2: 为 Spring Cloud Stream 应用引入 Java 函数 - 第 1 部分

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

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

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

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

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

博客 5: 案例研究:使用 HTTP 源和 JDBC Sink 构建和运行流式应用程序

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

博客 6: 案例研究:HTTP 请求函数和处理器

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

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

这篇博客探讨了文件 | MongoDB的简单数据管道。数据通过文件源接收,然后插入到 MongoDB 数据库中。这篇博客介绍了底层的文件 Supplier/源和 MongoDB Consumer/Sink。然后它展示了如何将管道作为独立部署运行。最后,它展示了如何在 Spring Cloud Data Flow 上编排和运行管道。

博客 8: 案例研究:关系数据库源和文件 Sink

这篇博客探讨了另一个用例,其中数据库用作源,并将其中提取的信息发送到目标文件。它探讨了支持函数 - JDBC Supplier 和文件 Consumer,然后向我们展示了其配置选项。然后它展示了如何独立使用来自这些组件的应用程序(JDBC 源和文件 Sink)。这篇博客最后展示了如何添加商业 JDBC 驱动程序来自定义现有的 JDBC 源应用程序。

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

在本部分中,我们研究了在 Spring Cloud Data Flow 应用管道中看到的另一个常见用例。它向我们展示了如何在 Spring Cloud Data Flow 上部署远程文件摄取工作负载。作为用例的一部分,这篇博客涉及了一些不同的函数和应用,例如 FTP 和 SFTP Supplier 和源、Amazon S3 Supplier 和源、任务启动器函数及其 Sink 等。这篇博客教会了我们一些关于如何将各种组件链接在一起以构建具有苛刻用例的强大应用的见解。这篇博客最后以使用 S3 存储桶为例,演示了在 Spring Cloud Data Flow 上进行远程文件摄取的用例。

博客 10: 案例研究:聚合器函数和处理器

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

博客 11: 案例研究:Elasticsearch Sink

在本篇博客中,我们研究了 Elasticsearch 的 Consumer 函数及其相应的 Sink 应用。它介绍了各种配置选项,并解释了如何在自定义应用中独立使用 Consumer。这篇博客最后演示了 Elasticsearch Sink 如何作为独立应用部署运行。

博客 12: 案例研究:实时更改数据捕获 (CDC) 分析,使用 CDC Debezium 源和分析 Sink

这是一篇非常详细的博客,在其中我们看到了更改数据捕获 (CDC) 模式在实际应用中的表现。作者通过深入研究 CDC-Debezium Supplier 及其内部细节,向我们分析了 CDC 的工作原理。然后,它解释了如何从 Supplier 创建 CDC-Debezium 源并使用它,并介绍了各种配置选项。这篇博客还介绍了分析 Consumer 函数及其相应的 Sink 应用。最后,这篇博客深入探讨了CDC | 分析数据管道在 Spring Cloud Data Flow 上的工作原理。在 Spring Cloud Data Flow 上部署并激活管道后,它将展示如何在 Grafana 仪表板上显示来自 CDC 源应用的分析。这篇博客最后给出了一些关于这些特定类别的函数和应用的未来方向的指示。

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

这也是一篇非常详细的博客,分为两部分(系列中的系列),详细阐述了与函数和应用相关的测试工作原理。它深入测试的核心,解释了各种测试策略,并演示了它如何与testcontainers(我们在测试流应用中的组件时大量使用的技术)一起工作。这篇博客通过为Couchbase开发一个 Consumer 及其类似的 Sink 来演示这些概念。它最后讨论了 Spring Cloud Stream 测试绑定器如何作为一种良好的测试策略来集成测试 Sink 应用。

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

这是博客 #13 的延续,在其中我们现在将看到如何对开发的 Sink 应用(Couchbase Sink)进行集成和验收测试,而不是使用测试绑定器。结合阅读博客 #13 和 #14,可以让我们深入了解使用良好的测试策略,不仅可以用于流应用组件,还可以更广泛地用于通用数据集成用例。

博客 15: 您正在阅读的正是这篇博客。如果您一直读到此处,那么您现在即将完成本博客系列第 15 部分的阅读。这篇博客介绍了包含我们讨论的所有组件和应用的流应用的2020.0.0版本。如您所见,我们还在本最终版本中对本系列的所有博客进行了回顾。

总结

在本博客系列中,我们没有涵盖许多其他函数、应用、组件和用例。您当然可以在stream-applications 存储库中找到它们。

感谢您与我们一起踏上这段博客系列之旅。希望您喜欢它。我们当然重视您的建议、意见和想法。请继续与我们互动,在Github 存储库上创建错误报告和功能请求,并在 StackOverflow 上使用spring-cloud-streamspring-cloud-dataflow标签提问。以下是一些贡献指南,用于向存储库添加新功能和组件或修改现有组件。说到对存储库的贡献,我们欢迎社区的任何拉取请求。

获取 Spring 新闻通讯

与 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部